Rからpythonを呼び、pythonでGPIOを叩いてLチカするまでの長い道のりの一歩目
pythonからGPIOを経由して、外部のセンサやLEDをいじることが出来ましたので、今度はRでやっていこうと思います。
とはいえ、RむけのGPIOライブラリはおそらくなく、そもそもデフォルトの状態でR入っていないのでまずはRを導入するところから。
apt-getで楽する場合
こちらを参考にしました。
以下のコマンドを実行するだけです
sudo apt-get install r-base
ただし、この記事と同じ、R3.1.1が入ります。古っ。 とりあえず起動して
mean(1:10)
でちゃんと計算されることくらいにチェックは留め、R3.4.1を入れることにしました。
/etc/apt/source.listを見ると、mirrordirector.raspbian.orgとかになっていて、バイナリで得る方法は期待できないなということで。
ソースからビルドして頑張る場合
こちらから、欲しいバージョンを選んで落としてきます。 Index of /src/base/R-3
やることはこちらの、「Linuxでソースからのビルド」のような感じです。 www.okadajp.org
今回はこんな感じ。作業ディレクトリは適当に~/work/にして、ダウンロードしています。
wget https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz
tar xvfz R-3.4.1.tar.gz
これで~/work/R-3.4.1/に解凍したファイルが出てくるので、
mv R-3.4.1
./configure
make
sudo make install
で入れました。configureは./configureにしないとデフォルト環境では実行されませんね。
configureでコケる
…が、configureで一度こけました。Rのcurlパッケージがlibcurlを要求していて、それが入っていないことが原因ぽい。
こちらで、 CRAN - Package curl
SystemRequirements: libcurl: libcurl-devel (rpm) or libcurl4-openssl-dev (deb).
の記述からlibcurl4-openssl-devが必要と判断。
sudo apt-get install libcurl4-openssl-dev
で入れたらconfigureはパスしました。
これ以外にもパッケージごとに外部のライブラリに依存しているものがあるはずで、大体は検索すればどのパッケージかはわかるはずです。今回も検索したら一番上にcranのページが来た
今回、それっぽいライブラリは
apt-cache search ^libcurl
の方法でもみたのですが、多過ぎ…。ちゃんと確認した方が良いと思いまする。
今回、これを試す前に結構apt-getで入れているので、素のraspbian+Rだとあれもこれも入れろと言われると思います。頑張りましょう。
入れたものは、前回の記事、 niszet.hatenablog.com
のリンク先の、
Raspberry PiでのPython 3.5環境構築 | MUDAなことをしよう。
に書いてあるものからいくつかと、あといくつか…いずれ追加します。
それでもconfigureでwarningが出る
今回は無視してすっ飛ばしましたが、htmlとかpdfとかbuild出来ないよ、というwarningが出ます。
こちらに記事があったのですが
…試していません。 texは結構ファイルサイズ的に重いのと、おそらくこっちで開発あまりしないので…。
いずれ、試したらどこかで書きます。
makeは時間がかかる
約1時間かかりました。のんびりお茶でも飲むか、寝る前にしかけて朝結果を見るとか。
と思っていたら、こんなお言葉をいただく。ありがたや…
時間かかるやつのコンパイルは、ラズパイ上で直接やるより、PC上にARMのVMを立ててやる方が早いかもです。
— Hiroaki Yutani (@yutannihilation) 2017年8月11日
わぁしまった、思いつかなかった…。
ちゃんと動くかどうかも含めて試してみようと思います。
make installはsudoで
まぁこれはいいか。
PATHを設定しないと、デフォルトでは/usr/local/bin/R 下に入るのでターミナル上でRと打っても実行されません。
パスの追加はこちらを参考に。 パスを追加したい〜.bashrc編〜 - ITmedia エンタープライズ
私の環境だとapt-getで入れたRがそのまま残っているので、~/.bashrcのPATHを
export PATH="/usr/local/lib/R/bin/R:$PATH"
に書き換え(先に自分が入れたRが見える)て、R –versionで3.4.1になることを確認、
mean(1:10)
でちゃんと計算されることも確認してとりあえずR3.4.1 on Raspberry Pi 3 の達成です。お疲れ様でした。
終わりに
どんどん答えから遠ざかっているような気が若干していますが、まぁいずれたどり着くと信じて進めていくのです。
次回はRからPythonを呼びますよ…
とりあえず、動きはしたもののこの辺りは苦手…。
間違いとかもっと良い方法とか、あれば教えてください…