不要なパッケージを消す

名前が lib からはじまるパッケージを整理する

"Eee PC 900A に Debian をインストール - だらりな。" のつづき。基本的なシステムしか入れてないのだけど、それでも不要なパッケージが入ってるのを消す。別に SSD が 4 GB しかないからとかじゃなく、なんとなく。あとで、容量的に許せば、おおざっぱなメタ・パッケージで GNOME を入れたりする気もある。
まず、ライブラリ・セクション (参考: "Debian -- List of sections in "sid"") にあるパッケージを全部自動的にインストールされたことにして、不要 (Unused) なものはパージされるようにしようとしてみる。

sudo aptitude -s markauto '~i~slibs'

すると、locales がパージされそうになってしまった。locales だけ除外してもいいのだけど、やりかたを変え、指定を lib ではじまるパッケージにしてみる。

sudo aptitude -s markauto '~i~n^lib'

だいじょうぶそうなので -s をはずして実行。少し整理できた。消えたパッケージ、あとから結局依存で入ってくるものばかりのような気もするけど。

Essential (必須) なパッケージ

他もどんどん markauto していこうと思うのだけど、Essential なパッケージはやめておこうと思う。依存関係が明記されてなくても、その機能が前提されるらしいので。

Packages may assume that functionality provided by essential packages is always available without declaring explicit dependencies, which means that removing functionality from the Essential set is very difficult and is almost never done.

http://www.jp.debian.org/doc/debian-policy/ch-binary.html#s3.8

もっとも、Essential なパッケージは簡単には消せないようになってるみたいではあるけど。

Since these packages cannot be easily removed (one has to specify an extra force option to dpkg to do so), this flag must not be used unless absolutely necessary.

http://www.jp.debian.org/doc/debian-policy/ch-binary.html#s3.8

ちなみに Essential なパッケージは、aptitude show <パッケージの名前> したとき "必須: yes" と表示される。

Priority (重要度) が required (要求) なパッケージ

Essential のつぎに重要そうなのは Priority が required なパッケージ。まず、前者は後者のサブセットということでいいんだろうかと、確認してみる。

aptitude search '~E' > p-e.txt
aptitude search '~prequired' > p-r.txt
diff -u p-e.txt p-r.txt

そういうことでいいらしい。ただひとつ、apt パッケージが、Essential なんだけど Priority は required じゃないと出る。aptitude show apt してみると、apt は Essential じゃない。よくわからないけど、なんかそういうもんなんだろうか。
それはともかく、Priority が required なパッケージは markauto してもいいんだろうかと、"Debian Policy Manual" の 2.5 Priorities を読んでみる。消えるとマズイらしい。でも、ためしにやってみる。

sudo aptitude -s markauto '~prequired!~E'

なにも消えない。ということで -s をはずし実行してしまった。
これは、Priority が required なパッケージは、依存関係がなくなっても勝手に消されないということであるのかな。たとえば、気づくと libvolume-id0 と libvolume-id1 というパッケージが入っていたのだけど、調べてみると、前者はそもそも Debian Sid のアーカイヴから消えてるし、他のパッケージに影響なく単体でパージできる。実際にパージしてしまった。

その他のパッケージを整理する

あとは Priority が required じゃないパッケージ。ここもどんどん markauto していく。これはちまちまと手でやるしかない感じ。といっても、数えるほどしかパッケージが入ってない状態なので、それほどには手間ではないのだけど。
以下のコマンドの出力を見ながら、ちまちまと markauto していった (ホントは Aptitude::CmdLine::Show-Deps "true"; してるので、-D はつけてない)。

sudo aptitude -s -D markauto '~i!~required'

他のパッケージが依存してるものはどんどん markauto して、いらないパッケージ (doc-linux-ja-text をはじめ、update-inetd なども) はパージしていった。aptitude search '~i!~required' の出力をながめて確認したりしつつ。
整理はとりあえずこのへんで終了。