Debianパッケージの棚下ろし

しばらく放置していたPCをsqueeze→wheezyする。だがその前に、不要なパッケージを削除して少しでも更新作業を軽くしたい。

こういうときパッケージごとにこれからも必要かどうかを判定しなければなない。とはいえ数年とたたないうちによくわからないパッケージが増えてくるもの。

で、いつでも使えるわけではないけどこういうタイミングなら使える方法として

aptitude search '~i!~U'

これはインストール済みパッケージのうち、更新のないパッケージを検索する。今はメジャーバージョンアップをしようとしているのだから、これを実行して表示されるのは長らく更新のないパッケージということになる。

そういうパッケージには

  • 本当に長らく更新がないが今も使われている
  • そのパッケージが消失してしまった(パッケージ名の変更やメンテナンス終了、Debian以外からインストールしたなど)
  • 実は先行してtestingなどから導入したパッケージだった(実際にはsqueeze→wheezyで更新があった)

などがある。

見覚えのあるパッケージ、説明を読んで分かるパッケージはよいとして、それ以外のものをどうするか。ごくおおざっぱな方針だが

  • 検索結果の三桁目にAがついているものは別のパッケージに必要とされているので覚えがなくてもとりあえず保留
  • transitional packageとあるやつはすでに不要となっているので削除

これ以外はやはり個別に判断するしかない。やり方の一つとしてパッケージに含まれるファイルのatimeを調べるというのが考えられる。これまたややおおざっぱだが

dpkg --listfiles dnsdoctor | egrep '^/(usr|var)' | \
  xargs ls -ld --time=atime | grep -v '^d' | sort -k6 | tail

長い間使っていないファイルばかりなら削除してもシステム運用に影響はないかもしれない。

ただし、システムのバックアップを定期的にとっているとatimeはあてにならなかったりもするので必ずしもあてになるわけでもない。(もっとも実際には使ったわけではないがatimeは更新されているというケースなので、使っているのを使っていないと勘違いしてまうということにはつながらない。)