Linux環境下で C# などを使ってプログラムを書きたい場合 一昔前は Mono 一択でしたが、去年 Microsoftが .Net Core として Linuxで使用できる オープンソースな .Netの環境を公開 してくれました。
Monoの環境が作ってあるので特に使っていなかったのですが、 気が向いたので本家版も導入してみようとして、 ちょっと詰まるところがあったのでメモしておきます。
基本的なインストール手順
基本的にインストール手順は .Net Coreの Get Startedに記載されています。 ( ただ、ここ記載の方法ではうまく行きませんのでご注意ください )
一応書き出して置くと
◎Fedoraの場合 23 24 向けのファイルしか公開されていないので Fedora25でも Fedora24のものを使うしかありません。
$ sudo dnf install libunwind libicu
$ curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848833
$ sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
$ sudo ln -s /opt/dotnet/dotnet /usr/local/bin
$ rm dotnet.tar.gz
◎Ubuntuの場合
Ubuntuも 16.10 までしか公式では対応していません。 以下は 16.10 のデータを使う方法です。
$ sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list'
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
$ sudo apt-get update
Failed to initialize CoreCLR, HRESULT: 0x80131500
上記公式の方法でインストールを行った場合 プロジェクトを作ろうとすると
Failed to initialize CoreCLR, HRESULT: 0x80131500
と表示されてうまく動作しません。 どうやら libicu のバージョンが古いものでないと行けなかったり するようです。
Ubuntuでの対応方法
Ubuntuでは古い libicuが libicu52 というパッケージで導入可能なようです。 このあたりからパッケージを入手して
sudo dpkg -i libicu52_*.deb
などを実行すればOKです。
Fedoraでの対応方法
Fedoraの場合、一発で古い libicu 52.x を導入する方法は見つかりませんでした。 調べてみたところ Fedora23, 24時代の libicu 52.x のパッケージを開腹して 中のライブラリをまるごとコピーした後
$ dotnet='LD_LIBRARY_PATH=~/(展開したライブラリへのパス)/:$LD_LIBRARY_PATH dotnet'
みたいなことをする方法が紹介されていました、 ( ここ や ここ ちょっときたない方法なので微妙ですね。
もう1つ Fedora Copr を使う方法があります。 CoprはFeodraやCentOSで使えるサードパーティリポジトリで 最新パッケージを多数収録しているのが特徴です。 同時にオンラインのビルドシステムとしての機能もあり、 自作の srpmをアップロードして 自作rpmを配布することも できます。
そのようなリポジトリなので信頼性に関して言うと問題も あるのかもしれませんが、このCoprで配布されている この パッケージを使うと 簡単に導入可能です。
$ sudo dnf copr enable nmilosev/dotnet-sig
$ sudo dnf install dotnetcore
以上です。
Hello World
導入が無事終わったので HW を書いてみます。
$ mkdir -p ~/work/dotnet/test
$ cd ~/work/dotnet/test
$ dotnet new
$ dotnet restore
$ dotnet run
無事実行できました。