Linuxで .Net ( dotnetコマンド )

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

無事実行できました。

コメントする