しばらく前から ports の更新には portupgrade ではなく portmaster を使っています。使いはじめの時には思わぬ動作をして困ったこともありましたが、portupgrade と違って予想外のツリーのインストールが勝手に始まることがないので使いやすいです。
ただ、一つだけ不満がありまして、
いちいち古い distfiles の削除を確認してくる
んですよ。ports で入れるソフトウェアなんだからそれの元アーカイブで、しかも古いやつなんか問答無用で消してくれてもいいよ!! と突っ込んでも毎回問い合わせてきます。むむむ。まぁ回避するには -d オプションを付ければよいのですが、結構な頻度で付けるのを忘れます(笑)。
ということで、google 様に対処方法を聞いてみると、${HOME}/.portmasterrc というファイルを作成して、そこにオプションを書けば良いのだそうです。ただ、記述するオプションというのが -d とかじゃなくて、/usr/local/sbin/portmaster の中で使ってる変数で、それを見るには直接ソースを覗いて getoptあたりを検索するのだとか(苦笑)。手元の版ではこんな感じになってました。
B) NO_BACKUP=Bopt; ARGS="-B $ARGS" ;;
C) DONT_PRE_CLEAN=Copt; ARGS="-C $ARGS" ;;
D) DONT_SCRUB_DISTFILES=Dopt; ARGS="-D $ARGS" ;;
F) FETCH_ONLY=Fopt; ARGS="-F $ARGS" ;;
G) [ -z "$PM_FORCE_CONFIG" ] && {
PM_NO_MAKE_CONFIG=Gopt; ARGS="-G $ARGS"; } ;;
H) HIDE_BUILD=Hopt; ARGS="-H $ARGS" ;;
K) DONT_POST_CLEAN=Kopt; ARGS="-K $ARGS" ;;
L) LIST_PLUS=Lopt ;;
P) packages_init first ;;
R) RESTART=Ropt ; ARGS="-R $ARGS" ;;
a) UPDATE_ALL=aopt ;;
b) BACKUP=bopt; ARGS="-b $ARGS" ;;
d) ALWAYS_SCRUB_DISTFILES=dopt; ARGS="-d $ARGS" ;;
e) EXPUNGE=$OPTARG ;;
f) export PM_FORCE=fopt ;;
g) MAKE_PACKAGE=gopt; ARGS="-g $ARGS" ;;
h) usage 0 ;;
i) INTERACTIVE_UPDATE=iopt; ARGS="-i $ARGS" ;;
l) LIST=lopt ;;
m) export PM_MAKE_ARGS=$OPTARG # For 'make checksum'
ARGS="-m $PM_MAKE_ARGS $ARGS" ;;
n) NO_ACTION=nopt; ARGS="-n $ARGS" ;;
o) REPLACE_ORIGIN=oopt ;;
p) fail 'The -p option has been deprecated' ;;
r) PM_URB=ropt
えーと、 -d オプションは 'ALWAYS_SCRUB_DISTFILES' ですね。ということで、 ${HOME}/.portmasterrcに下記のように書けば良いです。
ALWAYS_SCRUB_DISTFILES=yes
これで、config 画面と最初のインストールしますか? 問い合わせを過ぎれば、エラーが出ない限り portmaster -a -f した後で寝てしまっても大丈夫です(^_^)。