2014/08/01

Purge all packages marked as "rc"

"dpkg -l" するとrcにマークされているパッケージが沢山あるのに気が付いた。
一気にpurgeしたいなぁと思ったがもちろんそんなこと出来ない。
そういううまい方法無いかなーと思ったらあった。ニッチだけど素晴らしい。

Cleanup Unused Package Configs(http://www.adercon.com/ac/node/95)より
──
A very useful script to cleanup (purge) package remnants (e.g. config files associated with packages).
$ apt-get purge `dpkg --get-selections | grep deinstall | cut -f1`
The script will give you a prompt of what it is going to purge prior to purging.
──

Debian Linuxのパッケージ管理の話。
Linuxは幅広いのでアレコレ手を出さず一種類だけ使うようにしている。一通り使ってみてなんとなくだが選んだのがDebianなのでそれ以来デビアン一筋。
デビアンはaptでパッケージ管理をする。他にdebとかdpkgとかもあるが、ここもやはり手を広げないでaptだけで済ませている(今のところLinuxスペシャリストになりたいんじゃなくて個人で使えて遊べれば十分だから)。

aptのパッケージのアンインストールは設定ファイルを残してアンインストールする
apt-get remove <package名>
と、設定ファイルごとアンインストールする
apt-get purge <package名>
がある。
また、依存関係のあるパッケージを纏めてアンインストールしてくれる
apt-get autoremove <package名>
というのもあり、すっきりして便利なので実際はこのautoremoveを使うことが多い。

しかし何か大きなライブラリをインストールするとそれに依存する細かいライブラリも大量にインストールされ、それを"apt-get autoremove <package名>"とすると設定ファイルが大量に残ってしまった。
で大量に残った設定ファイルだけのパッケージを一個ずつpurgeするのは大変。
そこで設定だけ残ってしまったパッケージを全部まとめてpurgeしてしまうコマンドが上記の、
apt-get purge `dpkg --get-selections | grep deinstall | cut -f1`
だ。
コマンドをパイプで繋ぐというのがコマンドラインの便利機能らしいが実はこれがすごく苦手なので一個ずつ解読する。
apt-get purgeは上述の通り。
dpkg --get-selectionsはパッケージがinstallなのかdeinstall(アンインストール済み)か表示する。
grep deinstallでその結果からdeinstall(アンインストール済み)のものを抜き出し、
cut -f1でその1つ目のフィールド、つまりパッケージ名だけ抜き出す。
でこれらを上記のように連結すると、アンインストール済みのパッケージ名だけがリストアップされ、それらすべてに"apt-get purge"が実行されるということだ。

こういうLinuxのシェルスクリプトとかWindowsのバッチファイルとかは使わなきゃ使わないでなんとかなってしまうことが多い。
でもコンピュータを操作する上では、これらをすらすら書けるってのはプログラムが書けるとかよりずっと実用的だ。

ちなみにこれも無料VPS、Host1Freeでやったことだ。まさに今日、8月1日、Host1FreeはHaphostという名前にリニューアルしたらしい。公式サイトのモノアイのロボットが可愛いよ?
名前が変わっても無料で遊ばせてもらってるので宣伝。
>Haphostで動いているサイト
サーバがドイツにあり、RTTが260ms程なのでどうしてもファイル転送などスループットが遅い。

0 件のコメント:

コメントを投稿