最新のMonoを使いたい人ための mono-snapshot
こんばんは。課題やってない、文化祭のゲームもつくってない azyobuzin です。やはりブログは結論を先に書いておくほうが良いと学んだので無駄な経緯的前説はおいておいて本題をばばっと書いておきます。
ググればわかる基本的な使い方
http://www.mono-project.com/docs/getting-started/install/linux/ci-packages/ に各ディストリビューションでの mono-snapshot パッケージのインストール方法が書いてあります。 Debian リポジトリを試した結果、 2015/6 からの成功したビルドと昔のがぽつぽつ入っている感じです。
どれかひとつでもインストールすると
$ mono-snapshot This script will help you to set up your environment to use a snapshot package of Mono. To use it, run: . mono-snapshot APP/VER You have the following possible combinations of APP/VER: mono/2015.08.22+02.26.20 mono/20150501052837 Calling APP without specifying VER will load the latest version
といった具合にバージョンが選択できるようになります。表示にしたがって . mono-snapshot mono/VER
を実行すると
$ . mono-snapshot mono/2015.08.22+02.26.20 [mono-2015.08.22+02.26.20]$ mono --version Mono JIT compiler version 4.3.0 (tarball Sat Aug 22 02:46:14 UTC 2015) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: sgen
このように指定したバージョンの mono が実行できるよう Path が設定されます。.
をつけなければいけないのはこの先で説明するように、実行中のシェルの環境変数をいじりたいからです。
以下細かい話。 Debian 版でしか試していません。
mono-snapshot コマンドの動作
mono-snapshot コマンドは /usr/share/mono-snapshot/packages.d/
にインストールされたスナップショットごとの設定スクリプトを叩くものです。 mono/2015.08.22+02.26.20
ならば、ファイルは /usr/share/mono-snapshot/packages.d/mono/2015.08.22+02.26.20
にあります。中身はこんな感じ。
#!/bin/bash export MONO_PREFIX=/opt/mono-2015.08.22+02.26.20 export PATH=$MONO_PREFIX/bin:$PATH export DYLD_LIBRARY_FALLBACK_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_FALLBACK_PATH export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=$MONO_PREFIX/include:/usr/include:$C_INCLUDE_PATH export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal:$ACLOCAL_PATH export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH:/usr/lib/pkgconfig:/usr/share/pkgconfig export PS1="[mono-2015.08.22+02.26.20]$PS1"
つまるところ環境変数を書き換えて、わかりやすいようにプロンプトにバージョンを表示させるという動作です。
バージョンを指定できることを活用しよう
上のスクリプトを見てわかる通り、各スナップショットは /opt/mono-VER
にインストールされます。つまり、 /opt/mono-VER/bin/mono
を叩けば狙ったバージョンの mono を利用できます。
NuGetCalc では MONO_PREFIX
変数だけ指定して mono/20150501052837
を動かしていますが、今のところ不具合はないです。
最後に
@azyobuzin そしたらこっちとか http://t.co/IkLX8QBnT1
— upsilon (@kim_upsilon) August 24, 2015
@azyobuzin Alpha channelで十分ならこっちでも良かったかも http://t.co/uccfN5XfgT
— upsilon (@kim_upsilon) August 24, 2015
Alpha チャンネルの mono も 4.0.3 っぽくね?
— 悟り和イスキー膳 (@azyobuzin) August 24, 2015
教えていただきありがとうございました。そして Stable も Beta も Alpha も 4.0.3 なんですけどこれは…。