2012-04-13

ppa-purgeについて

Ubuntu 11.10のレポジトリにはないが、12.04のレポジトリには存在するソフトウェアが結構ある。そういうソフトウェアは、大抵メンテナーによって、テスト用のPPAが公開されているものだ。私も早速そのPPAを使い、ソフトウェアをインストールしてみた。

さて、ここでひとつ疑問がある。二週間後に控えている12.04へのアップグレードの時、このPPAからインストールしたソフトウェアはどうなるのだということだ。このソフトウェアは、特にシステムの根幹に関わるものではないので、それほど危険ではない。しかし、やはり気になる。

調べてみると、どうやらそういう場合のために、ppa-purgeなるbashスクリプトが用意されている。これは、引数として与えたPPAに属するすべてのソフトウェアを、公式レポジトリのバージョンにダウングレードしてくれるスクリプトだという。なるほど、たしかにそれなら安全だ。しかし、今のバージョンのUbuntuのレポジトリに存在しないソフトウェアはどうなるのだ。そのまま残るのか。それとも削除されるのか。

そこで、ppa-purgeを読んでみることにした。まだbashスクリプトは完全に習得していないが、読むぐらいならできるだろう。

vim /usr/sbin/ppa-purge

ppa-purgeの実装は、まず与えられたPPAに属するソフトウェアのリストを作成し、その中からインストールされているソフトウェアのリスト(つまり該当PPAからインストールしているソフトウェア)を作成する。
次に、インストールされているソフトウェアをすべて削除する。
そして、PPAを取り除く。
その後、インストールされていたソフトウェアを、インストールしようとする。つまり、該当PPAが取り除かれた後でインストールするので、他のPPAで同じソフトウェアを提供していなければ、公式レポジトリからインストールされる。
もし、パッケージが見つからない場合は、そのまま無視するようだ。

なるほど、実にわかりやすい。しかし、bashスクリプトは非常に強力だ。UNIXでは、スレッドよりもプロセスやパイプが発達したというのは実に興味深い。今まで意識していなかったが、多くのコマンドは、bashスクリプトやpythonスクリプトで書かれている。

今使っているPPAとソフトウェアの数は、手動で取り除くことができるだけの数であるが、このようなツールが提供されているのは心強い。

そして、必要であれば、いつでもソースコードを読んで実装を確認できる環境はすばらしい。

しかし問題は、アップグレード後もPPAによる最新で頻繁にアップデートされるソフトウェアを使い続けたい場合、いったいどうすればいいのだろうか。PPAを有効にしたままアップグレードしても安全なのだろうか。

No comments: