この文章は Raspberry Pi 上に Haskell 開発環境を構築する際のメモです。内容としては OS のインストールから stack new
したプロジェクトをビルド、実行できるところまでの最小構成です。Mac を使用して開発環境を構築していますが、PC が Windows や Linux の場合は該当箇所を読み替えてください。
TL;DR
Mac 上での作業:
$ brew install ddrescue
$ curl -LO https://downloads.raspberrypi.org/raspbian_lite_latest
$ unzip raspbian_lite_latest
$ for f in `ls *-raspbian-*.img`; do IMG=$f; done
$ diskutil list # SD カードがどのデバイスかを目視確認する(ここでは /dev/disk2 として進める)
$ DISK=disk2 # ここで目視したディスクを環境変数に入れる
$ diskutil unmountDisk /dev/$DISK
$ sudo ddrescue $IMG /dev/$DISK --force
$ touch /Volumes/boot/ssh # ssh を有効にする
$ diskutil eject $DISK
$ unset IMG
$ unset DISK
$ ssh pi@raspberrypi.local -o PreferredAuthentications=password # Raspberry Pi 起動後、しばらくしてから実行
Raspberry Pi 上での作業:
$ sudo dd if=/dev/zero of=/var/swap.extended bs=1M count=2048
$ sudo mkswap /var/swap.extended
$ sudo chmod 600 /var/swap.extended
$ sudo swapon /var/swap.extended
$ sudo sh -c 'echo "/var/swap.extended swap swap defaults 0 0" >> /etc/fstab'
$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo apt-get -y install llvm-3.9
$ sudo ln -s /usr/bin/opt-3.9 /usr/bin/opt
$ sudo ln -s /usr/bin/llc-3.9 /usr/bin/llc
$ mkdir -p ~/.local/bin
$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.profile
$ source ~/.profile
$ curl -sSL https://get.haskellstack.org/ | sh
$ stack upgrade
$ stack setup
最新の Stack がインストールできました 🎉
補足
2018 年 10 月現在、apt-get でインストールできる stack はバージョンが 1.1.2-7 と古く、AesonException "Error in $.packages.cassava.constraints.flags
というエラーが出力されます。curl -sSL https://get.haskellstack.org/ | sh
で導入すれば 1.7.1 がインストールされるため、こちらの方法をおすすめします。なお、現段階の Stack の LTS は 12.12 で、対応する GHC は 8.4.3 ですが、ARM 向け GHC は 8.2.2 までしかないので、LTS 11.8 を使用する必要があります。
2018 年 2 月現在、Raspberry Pi は Debian Stretch ベースになり、普通に以下のように Stack が入れられるようになりました。
$ sudo apt-get install haskell-stack
2017 年 4 月 21 日現在、https://get.haskellstack.org のスクリプトでは stack をインストールできません。代わりに以下サイトよりバイナリをダウンロードしてください。
参考サイト
-
Rasberry Pi3 (ARMv7)にhaskell-stackをインストールする - Qiita
- Raspberry Pi に Stack がインストールできることを気が付かせてくれたエントリです。もともと本エントリは上記エントリの追試だったのですが、最新の Stack を使用することで
stack setup
ができるようになったため、行っている内容はかなり違います
- Raspberry Pi に Stack がインストールできることを気が付かせてくれたエントリです。もともと本エントリは上記エントリの追試だったのですが、最新の Stack を使用することで
-
Raspberry Pi 3を買ってMacを使ってWiFi接続とSSHの接続するまで - Qiita
- Wi-Fi 設定を行う場合に参考になるエントリです
-
haskell -
cabal update
failed due toout of memory
- Stack Overflow- Raspberry Pi 上でメガトン級のライブラリ(cabal や ghc-mod など)をビルドしようとすると、メモリとスワップをすべて使いつくして OS が落ちてしまいます。この問題はスワップを増やすことで回避できます