portscleanの代替distviper
sysutils/bsdadminscriptsには便利ツールがたくさん入っている。
たとえばdistviper。
portsの運用を続けると、/usr/ports/distfiles/配下には古いファイルがたまっていくが、これを自動的に検知して削除してくれる。
同じ用途に使えるコマンドとしては、portupgrade付属のportscleanが有名だが、これらのコマンドはrubyが必要で、これだけのためにインストールするのも重い。
/usr/ports/distfiles/配下のすべてのファイルに対して検知を行うthoroughモードと、インストールされているportsだけに限り検知を行い、それ以外を削除するfastモードがある。
thoroughモードは時間がかかるので、portsビルド専用(つまりビルドだけしてインストールしない)マシンでもないかぎりfastモードで十分。
-dで消されるファイルの確認、-iで消す前に聞くようになる、-qでメッセージ抑制、-vでverboseといったオプションがある。
実行例
$ distviper -d fast delete zsh-4.3.9.tar.bz2 (中略) $ sudo distviper fast delete zsh-4.3.9.tar.bz2 delete zsh-4.3.9-doc.tar.bz2 delete xorg/driver/xf86-video-ati-6.11.0.tar.bz2 delete xorg/driver/xf86-video-mach64-6.8.0.tar.bz2 delete xorg/driver/xf86-video-nv-2.1.12.tar.bz2 delete xorg/driver/xf86-video-r128-6.8.0.tar.bz2 delete xorg/driver/xf86-video-radeonhd-1.2.4.tar.bz2 delete xorg/driver/xf86-video-openchrome-0.2.903.tar.bz2 delete gnome2/gdm-2.24.1.tar.bz2 delete gnome/esound-0.2.41.tar.bz2 delete a2ps-4.13b.tar.gz delete libssh2-1.0.tar.gz delete xc/vnc-4_1_3-unixsrc.tar.gz delete xc/X430src-1.tgz delete audiofile-0.2.6.tar.gz delete samba-3.0.34.tar.gz delete thunderbird-2.0.0.19-source.tar.bz2 $
ということで、/usr/local/etc/periodic/weeklyというディレクトリを(無ければ)作って、998.deldist.shとか適当な名前で下記のスクリプトを置いて、週1で自動的に実行されるようにしておいた。
/etc/local/etc/periodic/weekly/998.deldist.sh
#!/bin/sh DELCMD='/usr/local/sbin/distviper' DELOPT='fast' rc=0 if [ -x $DELCMD ]; then echo 'Searching and deleting outdated distfiles...' $DELCMD $DELOPT || rc=$? echo 'Done.' else echo "$DELCMD is not installed and I gave up." rc=2 fi exit "$rc"