Ubuntu 16.04: PowerShellをインストールする

MicrosoftによりPowerShellがオープンソース化されました。PowerShellのビルド方法とインストール方法について記載します。

1 ダウンロードしてインストールする

ビルド済みのdebパッケージが用意されています。

$ DL=https://github.com/PowerShell/PowerShell/releases/download/
$ wget ${DL}/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
$ sudo apt install -y libunwind8 libicu55
$ sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

2 ビルドしてインストールする

ソースコードをビルドしてインストールする方法を記載します。

2.1 dotnetのインストール

こちらのインストール方法の手順を用います。

$ sudo sh -c 'echo "deb [arch=amd64] \
https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" \
> /etc/apt/sources.list.d/dotnetdev.list'
$ sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
$ sudo apt update -y
$ sudo apt install -y dotnet-dev-*

2.2 ビルドに必要なパッケージのインストール

PowerShellのビルドに必要なパッケージをインストールします。

$ sudo apt install -y cmake make g++

2.3 PowerShellのソースコード取得

–recursiveオプションをつけてgit cloneします。

$ git clone --recursive https://github.com/PowerShell/PowerShell.git
$ cd PowerShell

2.4 PowerShellのビルド

こちらのビルド方法の手順を用います。

$ cd src/libpsl-native
$ cmake -DCMAKE_BUILD_TYPE=Debug .
$ make
$ cd ../..
$ dotnet restore
$ cd src/ResGen
$ dotnet run -c Linux
$ cd ../TypeCatalogParser
$ dotnet run -c Linux
$ cd ../TypeCatalogGen
$ dotnet run -c Linux \
../Microsoft.PowerShell.CoreCLR.AssemblyLoadContext/CorePsTypeCatalog.cs \
powershell.inc
$ cd ../powershell-unix
$ dotnet build -c Linux

2.5 PowerShellのインストール

インストールします。

$ sudo cp -a bin/Linux/netcoreapp1.0/ubuntu.16.04-x64 /opt/powershell
$ sudo ln -s /opt/powershell/powershell /usr/local/bin/

実行してみます。

$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/hiroom2/src/PowerShell/src/powershell-unix> dir

    Directory: /home/hiroom2/src/PowerShell/src/powershell-unix


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----          8/24/16   4:29 AM                bin
d-----          8/24/16   4:29 AM                obj
------          8/24/16   4:26 AM          42092 libgtest_main.a
------          8/24/16   4:26 AM        2793922 libgtest.a
------          8/24/16   4:26 AM         194760 libpsl-native.so
------          8/24/16   4:25 AM           2338 project.json
------          8/24/16   4:27 AM        1369383 project.lock.json


PS /home/hiroom2/src/PowerShell/src/powershell-unix>