祝 !! OSS 化。

PowerShell が OSS 化され Linux や Mac でも動くようになったので、早速試してみます。

手順

大まかな流れは以下になります。

  • openssl を homebrew で導入。必要なシンボリック リンクを作成。
  • Mac 向けの dotnet core をインストール
  • dotnet core の動作確認
  • PowerShell のインストール
  • PowerShell の動作確認

OpenSSL を Homebrew で導入

すでに導入済みのため、本家のこちら から拝借。

    $ brew update
    $ brew install openssl
    $ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
    $ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/

Mac 向けの dotnet core をインストール

バイナリも 上と同じページ にリンクがあるので、そちらから最新版を入手します。

pkg フォーマットなので、ダウンロード後、ダブルクリックし、ウィザードに従いインストールします。

dotnet core の動作確認

インストールされた dotnet core の動作確認をします。

dotnet core のお作法を知らないので 上と同じページ にあるコマンドを写経します。

    [ ~/tmp/ ]
    % mkdir hwapp
    [ ~/tmp/ ]
    % cd hwapp
    [ ~/tmp/hwapp/ ]
    % dotnet new
    Created new C# project in /Users/user01/tmp/hwapp.
    [ ~/tmp/hwapp/ ]
    % dotnet restore
    log  : Restoring packages for /Users/user01/tmp/hwapp/project.json...
    log  : Writing lock file to disk. Path: /Users/user01/tmp/hwapp/project.lock.json
    log  : /Users/user01/tmp/hwapp/project.json
    log  : Restore completed in 1046ms.
    [ ~/tmp/hwapp/ ]
    % dotnet run
    Project hwapp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
    Compiling hwapp for .NETCoreApp,Version=v1.0
    
    Compilation succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time elapsed 00:00:01.5014416
    
    
    Hello World!
    [ ~/tmp/hwapp/ ]
    %

と単純に終わりましたが、実は 2 点ほど嵌まっています。

嵌まったところ 1

普段 zsh を使っているのですが、dotnet core をインストール後、インストール前から起動済みのシェルで dotnet コマンドが command not found に。シェルの再起動で事なきを得ていますが、そういうもんだっけ…?

嵌まったところ 2

Hello World アプリを実行する際に、きちんと hwapp などのフォルダを掘ってそこでコマンドを実行すること。上の対応でシェルを再起動した際に、フォルダ移動し忘れてホームディレクトリで dotnet new から始まるコマンド実行したらあえなく玉砕に。

Garageband などのアプリ ファイルの一部が *.cs という拡張子のため、 dotnet restore の実行が長時間になり、dotnet run はエラーになります。

    [ ~/ ]
    % dotnet restore
    log  : Restoring packages for /Users/user01/project.json...
    log  : Writing lock file to disk. Path: /Users/user01/project.lock.json
    log  : /Users/user01/project.json
    log  : Restore completed in 917ms.
    [ ~/ ]
    % dotnet run
    
    
    Project user01 (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
    Compiling user01 for .NETCoreApp,Version=v1.0
    /usr/local/share/dotnet/dotnet compile-csc @/Users/user01/obj/Debug/netcoreapp1.0/dotnet-compile.rsp returned Exit Code 1
    /Users/user01/error CS2015: '/Users/user01/Library/Preferences/com.apple.logic.pro.cs' is a binary file instead of a text file
    /Users/user01/error CS2015: '/Users/user01/Library/Containers/com.apple.garageband10/Data/Library/Preferences/com.apple.garageband10.cs' is a binary file instead of a text file
    
    Compilation failed.
        0 Warning(s)
        2 Error(s)
    
    Time elapsed 00:01:31.0792453
    
    [ ~/ ]
    %

PowerShell のインストール

PowerShell 6.0.0 alpha9 のパッケージを Github からダウンロードし、インストールします。pkg フォーマットなので dotnet core と同じくウィザードに従いインストールします。

PowerShell の動作確認

シェルを起動し直して PowerShell を実行します。powershell コマンドがインストールされ、$PSVersionTable は以下の出力となりました。

しかし、OSVersion はまだ実装されていないのかな ?

    [ ~/ ]
    % powershell
    PowerShell
    Copyright (C) 2016 Microsoft Corporation. All rights reserved.
    
    PS /Users/user01> $PSVersionTable
    
    Name                           Value
    ----                           -----
    PSVersion                      6.0.0-alpha
    PSEdition                      Core
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
    BuildVersion                   3.0.0.0
    GitCommitId                    v6.0.0-alpha.9
    CLRVersion
    WSManStackVersion              3.0
    PSRemotingProtocolVersion      2.3
    SerializationVersion           1.1.0.1
    
    
    PS /Users/user01> [System.Environment]::OSVersion
    OSVersion's call to GetVersionEx failed.
    At line:1 char:1
    + [System.Environment]::OSVersion
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : OperationStopped: (:) [], InvalidOperationException
        + FullyQualifiedErrorId : System.InvalidOperationException
    
    PS /Users/user01>

最近のマイクロソフト

Azure や OSS への傾倒など、CEO が変わってから (中の人はその前からと言われたりしますが) 随分様変わりしたなと思います。しかし、ソフトウェア ライセンスの売上がほとんどだった会社が OSS に傾倒、なによりもパートナー ビジネスを進めていた会社がクラウドに傾倒し、今後何が起きていくかは注視せざるを得ないと考えるところです。確たるE-コマース事業や広告事業がある Amazon と Google と違うところを上手くこなしていくのでしょうけども、その上手いこなし方の余波で埋没しないようエンジニア・勤め人として生き抜きたいと切に願います。