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"