日記とか、工作記録とか

自分に書けることを何でも書いてゆきます。作った物、買ったもの、コンピュータ系の話題が多くなるかもしれません。

Raspberry pi 2+Rasbian OSの日頃のメンテナンス(apt-get, df)

このブログでは扱ってこなかったのですが、Raspberry pi 2は時々メンテナンスの必要があります。今回はそのへんの話題で書いてみます。

私が使っているのはRasbian OSなのですが、どのOSをインストールするにしても、時々アップデートの必要があります。このブログを見てくださっている方もそれなりに人数がいるようなので、主に初心者の方に向けて、私が時々(週1回ペースくらいで)実行するメンテナンスコマンドを紹介します。

そもそも、どうしてメンテナンスが必要なのか?

RasbianのようなLinuxベースのOSでは、機能は「パッケージ」単位で管理されているのが普通です。パッケージとは、プログラムの固まりです。Linuxの場合、パッケージの多くはフリー(無償の、自由な)ソフトで、それぞれのコミュニティ(開発者と利用者のグループ)によって開発されています。

開発ができる人は「機能が足りないから追加してみたよ」とか「上手く動かないところを直してみたよ」というような貢献をすることを期待されています。多くの場合は無償の活動です。人の役に立った(はずだ!)というボランティア精神や、単純に作るのが好きだという想いや、ごくごく稀にもらえる「これがほしかった!ありがとう」というコメントを心のエネルギーにして活動しています。フリーソフトを開発することで給料をもらっている人も、ごく稀にですが、いることはいます。

利用者は「うまく動いたよ!」とか「ここが動きません」とか「こんな機能が欲しい」といったような意見を寄せる(フィードバック)ことを期待されています。動いて当然、なんて思わないでください。上で書いたように、ほとんどの開発者は給料をもらわずにボランティアで活動しています。あなたもお金を払わずにソフトを手に入れたはずです。動いて当然、動かなければ文句を言う…… では、開発者のやる気は維持されません。もし期待したように動かずがっかりしたときも、開発者が原因分析をする手助けになるよう、なるべく情報(あなたが試したこと、期待していた動作、実際に起こった結果)をコミュニティに送りましょう。

基本は「ないなら、作れ」です。こんな機能が無い、足りない、欲しい、と思ったら、作るのはあなたです。

さて、前置きが長くなりましたが、バグ修正は時には重要な意味を持ちます。パッケージには時々セキュリティの問題が見つかることがあり、これを放置しておくと見知らぬ誰かから攻撃を受けることがあるからです。

攻撃を受けてもたいしたことないよ、自分のRaspberry piに重要な情報はいれてないし、と思うかもしれませんが、多くの場合あなたから何かを奪うために攻撃するのではありません。あなたのRaspberry piを利用して誰かを攻撃することを目的にするのです。インターネット上には攻撃の「踏み台」にされているコンピュータが無数にあり、乗っ取られていることが問題になっています。

長々と書きましたが、要はマナーとして、他の人の迷惑にならないためにも、せめてパッケージは最新版にしておこうよ、ということなんですね。

apt-get

具体的な方法は全く難しくありません。初心者でもアップデートができるよう、開発者が地道に仕組みを作ってくれています。

まず、OSに保存されているパッケージの一覧を最新版に更新します。情報はインターネットにある所定の場所(レポジトリ)から取り寄せます。この操作には管理者権限が必要なので、sudoコマンドの中でapt-getコマンドを実行する必要があります。

$ sudo apt-get update

そのあと、この一覧を使って自分のOSを最新版にします。上のコマンドはupdate、下のコマンドはupgradeです。

$ sudo apt-get upgrade

更新が必要なパッケージは自動的にチェックされて、それらをダウンロードするためにどのくらいのSDカードの空き領域が必要か計算されます。[Y/n]でインストールするかどうかを確認されるので、yを押してインストールすればOKです。

df

apt-getコマンドはインターネットからパッケージをダウンロードしてきます。多くの場合はせいぜい1MBくらいなのですが、あんまり大きくないSDカードを使っていると、領域が足りなくなってくることがあるかもしれません。どのくらいSDカードに空き領域が残っているのかを確認するのは、dfコマンドです。私は普段-hオプションをつけます。-hは、Human Readable(人間に読みやすい形式で表示)の意味です。「残り」が「7.3GB」とでているのがわかります。私が使っているのは16GBのカードなのでまだ余裕です。

pi@raspberrypi:~$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  6.3G  7.3G   47% /
devtmpfs         459M     0  459M    0% /dev
tmpfs             93M  548K   93M    1% /run
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs            186M     0  186M    0% /run/shm
/dev/mmcblk0p1    56M   28M   29M   50% /boot
pi@raspberrypi:~$

もし領域が足りなくなってきたら、ダウンロードしたもののうち必要性の薄い物を削除すると良いでしょう。必要性が薄い物はどれか、というのも悩む必要はないです。autocleanというサブコマンドが自動的に判断してくれます。

$ sudo apt-get autoclean

私も初めてやってみました。少し領域があきました。0.6GBですから、少しじゃないかな……

pi@raspberrypi:~$ sudo apt-get autoclean
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
Del libraspberrypi0 1.20150421-1 [688 kB]
Del libraspberrypi-bin 1.20150214-2 [230 kB]
Del omxplayer 0.3.6~git20150210~337004e [3,576 kB]
...
Del libgssapi-krb5-2 1.10.1+dfsg-5+deb7u3 [132 kB]
Del libkrb5-3 1.10.1+dfsg-5+deb7u4 [342 kB]
Del libraspberrypi0 1.20150820-1 [687 kB]
pi@raspberrypi:~$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  5.8G  7.9G   43% /
devtmpfs         459M     0  459M    0% /dev
tmpfs             93M  548K   93M    1% /run
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs            186M     0  186M    0% /run/shm
/dev/mmcblk0p1    56M   28M   29M   50% /boot
pi@raspberrypi:~$

これでも空き領域が足りないよ、というときはさらに多くの領域をあけるcleanもあります。また必要になったらダウンロードすればいいや、という場合はこれでもよいでしょう。

pi@raspberrypi:~$ sudo apt-get clean
pi@raspberrypi:~$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  5.3G  8.4G   39% /
devtmpfs         459M     0  459M    0% /dev
tmpfs             93M  548K   93M    1% /run
tmpfs            5.0M     0  5.0M    0% /run/lock
tmpfs            186M     0  186M    0% /run/shm
/dev/mmcblk0p1    56M   28M   29M   50% /boot
pi@raspberrypi:~$

おまけ

仕事で使っているサーバであれば、実際にアップデートをしても大丈夫なのか、これまで作ったプログラムがアップデート後も正常に動くのか、事前に検証をすることが多いです。この場合、事前に中身が同じSDカードを2枚用意しておいて、1枚を試しにアップデートしてみて、もし問題が出た場合はもう1枚のSDカードに戻せば、少なくとも元通りにすることができます。しかし趣味の工作でそこまでしている人はあまりいないのではないかと思います。まぁ、だいたいの場合はちゃんと動きますのでご安心を。

Raspberry Piスターターパック (Pi2 用Standard)

Raspberry Piスターターパック (Pi2 用Standard)