FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Windows PowerShellをLinuxで試す

だいぶ前になったが、Windows PowerShellオープンソース化され、Linux上でも利用できるようになった。

jp.techcrunch.com

かくいう僕はPowerShellなど一度も使ったことがなく、Windowsコマンドプロンプトとの違いも分からない。 コマンドプロンプトは使いにくいので、タブの制御も出来るConEmuというエミュレータを利用している。 こちらの方がずっと使いやすい。

conemu.github.io

閑話休題Windows PowerShellLinuxで使うためにはどのようにすれば良いのか調査しよう。 VagrantLinuxを用意して環境を構築する。何故かVagrantUbuntu 16.04を構築できなかったので、Ubuntu 14.04で環境を立ち上げる。

github.com

普通にバイナリファイルをダウンロードする方法

まずリポジトリをクローンすると、./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のパッケージが必要らしい。

github.com

ただし、CLIのパッケージのインストールで詰まってしまった。Releaseバージョンのv1.0.0 preview 2をダウンロードしてビルドしようとしたのだが、途中で止まってしまう。

github.com

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)