Linux化計画(17)–Rのパッケージを更新する

Rをラズパイで使うというのは、Pi R-Square(円の面積)とゴロがいいので、・・・関係ないですが。

Rを起動して、update.packages()とやると、libフォルダに書き込めませんときました。
そうだ。特権で入らないとシステムフォルダの更新はできないのか。
そんなわけで、

su root

でラズパイに入り直し、Rを起動してUpdateを再開。

今度はうまくいったのですが、最後になってメッセージがでます。

警告を表示するには、warnings()

どうやらメモリが足りないと言っています。
こちらのサイトを参考に消費メモリをチェックしてみましたが、特に何か重いものが入っているという感じではありません。
ものづくりエクスペリメント Raspberry Piのメモリーを節約する

今度はRootではなくpiユーザのままsudoして入ってみますがやはりだめ。

悲しいメッセージ

ダウンロードされたパッケージは、以下にあります
‘/tmp/Rtmp2T4BAb/downloaded_packages’
'.Library' 中のパッケージの HTML 索引を更新します
Making 'packages.html' ... 完了
30 件の警告がありました (警告を見るには warnings() を使って下さい)
> ?Memory
警告メッセージ:
In file.show(temp, title = gettextf("R Help on %s", sQuote(topic)), :
system call failed: メモリを確保できません

もう一度、気を取り直して、ググってみます。一度検索したことのある下記のサイトに、何やらヒントのようなものが。
Getting the latest version of R on the Raspberry Pi
どうやら、/etc/apt/sources.listの中のdeb xxx のあとにstretch mainを入れたらよいようです。何の意味かよく分かりませんが、再起動の後apt-get installしてみるとstretch/mainというフォルダなのかどうかわかりませんが、LibreOfficeなども更新が入ってきました。

調べてみたところ・・・げげ、どうやらDebian9のテスト版らしい。ということはRaspbianでは動かないかも・・・。

Debian JP Project

最悪の場合、前回のバックアップに戻りましょう。

一旦、リブートしてapt-get upgradeしてみたら、300Mくらいのダウンロードが発生し、Debian9になってしまいました。
とりあえず動いているのでほっとしていますが、SDカードのバックアップはしっかりと取ります。


Linux化計画(15)–RのUpdate

Rのバージョンが古い(3.1.1)ので、Update(3.3.2)したくなりました。
例によって、何度もやっている

sudo apt-get install r-base

とやっても、「最新です」というメッセージが。

Windows版のほうがlinux版よりも新しいはずがないのでCRANをのぞいたら案の定でした。
多分、何か忘れていますね。
ここCRANのトップページにヒントがありました。

Supported branches
Debian jessie (stable)

For a backport of R 3.3.2 to jessie, simply add something like

deb /bin/linux/debian jessie-cran3/

to the file /etc/apt/sources.list on your computer. You need to substitute by one of the mirror URLs listed in the mirror list.

これによれば、アップデートサイトを登録しておかなければならないようです。CRANのミラーは統計数理研究所にあるので、さっそくnanoを使って、/etc/apt/sources.listに以下の一行を追加して、再度apt-get updateを実行。

deb http://cran.ism.ac.jp/bin/linux/debian jessie-cran3/

すると今度は次のようなエラーが・・・(´・ω・`) なにこれ?

W: GPG エラー: http://cran.ism.ac.jp jessie-cran3/ Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 06F90DE5381BA480

とりあえずもう一度、apt-get updateしたら、またもや同じメッセージが出たのですが、upgradeしてみると

警告: 以下のパッケージは認証されていません!
r-doc-html r-base-html
検証なしにこれらのパッケージをインストールしますか? [y/N]

と聞かれます。ここでYesを選択すればインストールはできるのでしょうけど、せっかくのセキュリティ対策を使わないのはばかげていますし、ここで勉強しなければ意味ありません。

CRANトップページに以下の解説が。

Secure apt

The Debian backports archives on CRAN are signed with the key of Johannes Ranke (CRAN Debian archive) with key fingerprint 6212 B7B7 931C 4BB1 6280 BA13 06F9 0DE5 381B A480. You can fetch and import this with

apt-key adv --keyserver keys.gnupg.net --recv-key 6212B7B7931C4BB16280BA1306F90DE5381BA480

初めて公開鍵認証というものを意識しました。
指示通りapt-keyを何度か試してもエラーばかり。う~ん、とうなること数回。あ、そうだ。sudoが抜けてます。

gpg: 鍵381BA480をhkpからサーバーkeys.gnupg.netに要求
gpg: 鍵381BA480: 公開鍵“Johannes Ranke (CRAN Debian archive) ”を読み込みました
gpg: 処理数の合計: 1
gpg: 読込み: 1

今度はうまくいきました。
この後、

sudo apt-get update
sudo apt-get upgrade

さらなるエラーが

インストールすることができないパッケージがありました。おそらく、あり得ない状況を要求したか、(不安定版ディストリビューションを使用しているのであれば) 必要なパッケージがまだ作成されていなかったり Incoming から移動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
r-base : 依存: r-base-core (>= 3.3.2-1~jessiecran.0) しかし、3.1.1-1 はインストールされようとしています
依存: r-recommended (= 3.3.2-1~jessiecran.0) しかし、3.1.1-1 はインス トールされようとしています
r-base-dev : 依存: r-base-core (>= 3.3.2-1~jessiecran.0) しかし、3.1.1-1 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

「満たせない依存関係」?どうやらバージョンの前後関係が合っていないと言っているようですが、よくわかりませんが、r-baseがr-base-coreの3.3.2-1に依存しているにもかかわらず、3.1.1-1をインストールしようとしているという意味でしょうか(日本語が少し変です)。

こちらのサイト「apt-getのはまりどころ」によるとどうやらはまりどころのようですね。結局、

sudo apt-get remove r-base-core r-recommended

してもう一度、updateからupgradeでやり直しです。しかしどうもうまくいきません。
このサイトを参考にして、aptitudeを試してみました。

UbuntuのOSバージョンアップなどでaptの依存関係がおかしくなったときはaptitudeが便利

sudo aptitude install r-base

すると、いろいろな提案をしてくれます。とりあえず全部Noを選んで、すべての提案を確認。そのうえで、3.3.2ではなく3.1の安定板を使うのがよさそうだったので、その提案でインストールをしなおし。

pi@raspberrypi:~ $ sudo aptitude install r-base
以下の新規パッケージがインストールされます:
autotools-dev{a} cdbs{a} icu-devtools{a} libblas-dev{a} libbz2-dev{a}
libicu-dev{a} liblapack-dev{a} liblzma-dev{a} libncurses5-dev{a}
libpcre3-dev{a} libpcrecpp0{a} libreadline-dev{a} libreadline6-dev{a}
libtinfo-dev{a} r-base{b} r-base-core{a} r-base-dev{ab} r-base-html{a}
r-cran-boot{ab} r-cran-class{a} r-cran-cluster{a} r-cran-codetools{ab}
r-cran-foreign{a} r-cran-kernsmooth{a} r-cran-lattice{a} r-cran-mass{a}
r-cran-matrix{a} r-cran-mgcv{a} r-cran-nlme{a} r-cran-nnet{a}
r-cran-rpart{a} r-cran-spatial{a} r-cran-survival{a} r-doc-html{a}
r-recommended{ab}
更新: 0 個、新規インストール: 35 個、削除: 0 個、保留: 3 個。
アーカイブ 45.8 M バイト中 8,280 k バイトを取得する必要があります。展開後に 101 M バイトのディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
r-cran-codetools : 依存: r-base-core (>= 3.3.1-1~jessiecran.0) [3.1.1-1 がイン ストール予定となっています]
依存: r-api-3[仮想パッケージです]
r-recommended : 依存: r-base-core (>= 3.3.2-1~jessiecran.0) [3.1.1-1 がインストール予定となっています]
r-base : 依存: r-base-core (>= 3.3.2-1~jessiecran.0) [3.1.1-1 がインストール予 定となっています]
r-cran-boot : 依存: r-base-core (>= 3.3.1-1~jessiecran.0) [3.1.1-1 がインストール予定となっています]
依存: r-api-3[仮想パッケージです]
r-base-dev : 依存: r-base-core (>= 3.3.2-1~jessiecran.0) [3.1.1-1 がインストー ル予定となっています]
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを現在のバージョンに一時固定する:
1) r-base [インストールされていません]
2) r-base-dev [インストールされていません]
3) r-cran-boot [インストールされていません]
4) r-cran-codetools [インストールされていません]
5) r-recommended [インストールされていません]

以下の依存関係を未解決のままにする:
6) r-base-core が r-recommended を推奨
7) r-base-core が r-base-dev を推奨

この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージをインストールする:
1) r-base-dev [3.1.1-1 (stable)]
2) r-cran-boot [1.3-13-1 (stable)]
3) r-cran-codetools [0.2-9-1 (stable)]
4) r-recommended [3.1.1-1 (stable)]

以下のパッケージを現在のバージョンに一時固定する:
5) r-base [インストールされていません]

この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージをインストールする:
1) r-base-dev [3.1.1-1 (stable)]

以下のパッケージを現在のバージョンに一時固定する:
2) r-base [インストールされていません]
3) r-cran-boot [インストールされていません]
4) r-cran-codetools [インストールされていません]
5) r-recommended [インストールされていません]

以下の依存関係を未解決のままにする:
6) r-base-core が r-recommended を推奨

この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージをインストールする:
1) r-base [3.1.1-1 (stable)]
2) r-base-dev [3.1.1-1 (stable)]
3) r-cran-boot [1.3-13-1 (stable)]
4) r-cran-codetools [0.2-9-1 (stable)]
5) r-recommended [3.1.1-1 (stable)]

この解決方法を受け入れますか? [Y/n/q/?]

結局、最後の方法を受け入れてインストールは終わり。つまりアップデートはできないまま前のバージョンに戻しました。


Linux化計画(13)–Rのインストール

病膏肓に入る。

一通りRPi3が使えるようになったので、次はラズパイをRのサーバとして使えないかという野望が生まれました。
一般のパッケージの導入と同じように、

sudo apt-get install r-base

と叩くと関連するcoreとパッケージも一緒にインストールしてくれます。本当に便利ですね。

使ってみたところ、キャラクターベースのコマンドは受け付けてくれましたが、plot()はエラーにはならないものの何も表示してくれませんでした。ターミナルアクセスの限界なのでしょうか。

こちらを参考にしました。

Getting the latest version of R on the Raspberry Pi
http://raspberrypi.stackexchange.com/questions/41226/getting-the-latest-version-of-r-on-the-raspberry-pi

ラズパイにはTeraTermを使ってSSHで入っていますが、RのプロットはCLIとは別のグラフィックデバイスに出力するようになっていますから、TeraTermの画面に出ないだけで、裏では動いているはずです。

そこでVNCを使って入ってみたところ、Rがメニュに存在することが確認できたとともに、plot()も普通に使えました。



R Day9

夏休みのRシリーズはこれで終わり。

EDINETのデータを取り扱うのにAPIを探していたら、Rの面白そうなソースをGitHubで見つけたので、備忘記録。
https://github.com/RBookForFE/EDINET/blob/master/main_EDINET_crawler.R

やはりネックは、EDINETサーバとこちら側との間で、ある会社のデータのやりとりが「ひとかたまり」で発生してしまうことだろう。本来は、特定の要素を取り上げられるのがXBRLの良い所なのだが、それをEDINET側でサービスしてしまうと、サーバがオーバーフローしてしまうということなのか。