だいぶ前になったが、Windows PowerShellがオープンソース化され、Linux上でも利用できるようになった。
かくいう僕はPowerShellなど一度も使ったことがなく、Windows のコマンドプロンプトとの違いも分からない。 コマンドプロンプトは使いにくいので、タブの制御も出来るConEmuというエミュレータを利用している。 こちらの方がずっと使いやすい。
閑話休題、Windows PowerShellをLinuxで使うためにはどのようにすれば良いのか調査しよう。 VagrantでLinuxを用意して環境を構築する。何故かVagrantでUbuntu 16.04を構築できなかったので、Ubuntu 14.04で環境を立ち上げる。
普通にバイナリファイルをダウンロードする方法
まずリポジトリをクローンすると、./tools/download.sh
というのがあるので、これを実行すると勝手にバイナリがダウンロードされて、実行できるようになる。終わり。
git clone --recursive https://github.com/PowerShell/PowerShell.git cd PowerShell/tools/ ./download.sh powershell PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS /home/vagrant>
ソースコードからビルドしたい場合
docs/building/linux.md
が同梱しているので、これを参照してみる。これによると、CLIのパッケージが必要らしい。
ただし、CLIのパッケージのインストールで詰まってしまった。Releaseバージョンのv1.0.0 preview 2をダウンロードしてビルドしようとしたのだが、途中で止まってしまう。
log : Installing runtime.opensuse.13.2-x64.Microsoft.NETCore.DotNetHostPolicy 1.0.1. log : Installing runtime.opensuse.13.2-x64.runtime.native.System.Net.Security 1.0.1. log : Installing runtime.osx.10.10-x64.runtime.native.System.Net.Security 1.0.1. log : Installing runtime.osx.10.10-x64.Microsoft.NETCore.DotNetHostPolicy 1.0.1. log : Installing runtime.fedora.23-x64.runtime.native.System.Net.Security 1.0.1. log : Writing lock file to disk. Path: /home/vagrant/work/cli-1.0.0-preview2/build_projects/dotnet-cli-build/project.lock.json log : /home/vagrant/work/cli-1.0.0-preview2/build_projects/dotnet-cli-build/project.json log : Restore completed in 83135ms. Compiling Build Scripts... Publishing dotnet-cli-build for .NETCoreApp,Version=v1.0/ubuntu.14.04-x64 Project Microsoft.DotNet.Cli.Build.Framework (.NETStandard,Version=v1.5) was previously compiled. Skipping compilation. Project shared-build-targets-utils (.NETStandard,Version=v1.6) was previously compiled. Skipping compilation. Project dotnet-cli-build (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified Compiling dotnet-cli-build for .NETCoreApp,Version=v1.0 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:01.6450588 publish: Published to /home/vagrant/work/cli-1.0.0-preview2/build_projects/dotnet-cli-build/bin Published 1/1 projects successfully Invoking Build Scripts... Configuration: uilding .NET Core CLI * **************************** arget Publish from Standard Goals was overridden in Microsoft.DotNet.Cli.Build.PublishTargets.Publish arget Test from Standard Goals was overridden in Microsoft.DotNet.Cli.Build.TestTargets.Test arget Prepare from Standard Goals was overridden in Microsoft.DotNet.Cli.Build.PrepareTargets.Prepare arget Package from Standard Goals was overridden in Microsoft.DotNet.Cli.Build.PackageTargets.Package arget Compile from Standard Goals was overridden in Microsoft.DotNet.Cli.Build.CompileTargets.Compile GET >] efault tandard Goals GET >]
うーん、なんだこりゃ?バイナリをダウンロードして実行しても、謎のエラーで止まる。これは調査要だな。
$ dotnet Failed to resolve library symbol hostfxr_main, error: dotnet: undefined symbol: hostfxr_main Segmentation fault (core dumped)