Raspberry Pi 2 に F# をインストールする

初代 Raspi では、メモリが 256M しかなくて、Fsharp をソースからビルドしようとすると途中でこけてしまってうまく出来上がりませんした。今回の RPi2 はメモリが 1GB あるし CPU も早くなっているので、スムースに行くのではないか?と思って試してみました。

結論から言えば、ソースからビルドができません

結論から先に言うと、git から mono と fsharp のソースコードをダウンロードして来てビルドまではできるのですが、実行ができません。おそらく現時点(2015/02/26)の mono のバージョンに F# が対応していないだけだと思うので、適切な mono のバージョンを持って来れば実行ができるハズなのですが、結構面倒そうなのでパスします(苦笑)

mono や fsharp 自体のビルドは可能です。mono は 4時間弱、F# は 1時間ちょっとぐらい掛かるみたいですが、初代 RPi の時は 12時間以上かかっていたので「現実的な」時間になっています。

– mono 4.1.0 https://github.com/mono/mono
– fsharp 3.1 https://github.com/fsharp/fsharp

こんな感じで fsharpi の実行時に例外が発生しています。

ちなみに、fsharp4 のブランチを持ってきてビルドをしようとすると、コンパイルできなくてエラーになります。

レポジトリを追加して apt-get する

Use F# on Linux | The F# Software Foundation
http://fsharp.org/use/linux/

手順自体は、F# のサイトに書いてある「Option 1: Use the F# Debian/Ubuntu packages」の通りです。Rasberry pi のレポジトリには mono のバージョンが古いのと、fsharp 自体がありません。mono 自体がちょっと気になるところですが、sudo apt-key でレポジトリを追加した後に apt-get するとすんなり通ってくれます。

一応、下にコピーをしておきます。

レポジトリの追加

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list

mono と fsharp のインストール

sudo apt-get update
sudo apt-get install mono-complete fsharp

FSharp.Core.dll が見つからなくてエラーになる

たまに(?)、fsharpi を実行しようとすると、/usr/lib/mono/4.5 等に FSharp.Core.dll が見つからない、というエラーがでます。

F# on linux (mint/ubuntu) – dll path – Stack Overflow
http://stackoverflow.com/questions/27041080/f-on-linux-mint-ubuntu-dll-path

にある通り、gac に FSharp.Core.dll をインストールし直せば ok です。タイミング的に Fsharp 3.1 と 3.1.1 が混在しているときにおこるみたいです。

sudo gacutil -i /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.dll

追記 2015/02/27
どうやら、上記の方法はだめみたいです。/usr/lib/cli/fsharp/ のパスから探しているので、シンボリックリンクを作ると動きます。

cd /usr/lib/cli/fsharp/ 
sudo ln -s /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.* .

ただ、この方法も変なので、fsharp のインストーラーが何処かに書き忘れているような気もするのですが、よくわからず。

apt-get できるバージョン

– mono 3.12
– fsharp 3.1

以前、インストールしたときは fsharpi で実行するときにひどく待たされていたのですが、今回は大丈夫です。ひょっとすると、gac がうまくインストールされていなかっただけなのかもしれませんが。
そんな訳で、今回はさっくりと apt-get でインストールが可能です。というかソースからビルドできないのがアレなんですが、まあ良しとしましょう(笑)。

自分は BrickPi まで動かすぞ…と、近いうちに。

カテゴリー: 開発, F#, RaspberryPi パーマリンク