portsnapを使ってportsツリーを更新

csupを使うかわりに,portsnapを使ってportsツリーを更新することにしました.
手順は以下の通りです.「BSD にくびったけ - portsnap」にすばらしい解説記事があるので,ここを参考に作業しました.ほとんどこの記事の通りです.

手順

使い始める時にやること

(1) とりあえずportsnap fetch

% sudo portsnap fetch

(2) 次にportsnap extract

% sudo portsnap extract

(3) 最後にportsnap update

% sudo portsnap update

(4) 更新されたportsパッケージを確認

% sudo portversion -vL=

(5) 必要に応じてアップデート
とりあえず全部更新な場合は次のような感じで.

% sudo portupgrade -aRP
2回目以降にやる事

(1) portsnap fetch && portsnap update

% sudo portsnap fetch && sudo portsnap update

portsパッケージの確認や更新は同じ.

/etc/crontabに自動更新を仕込む

いちいち自分でportupgradeするのもだるい.というか,このくらい自動でアップデートして頂きたい.こんな事を毎回手動でやっていたらIT土方そのものである.そんなわけで.スクリプトを書いてcrontabに仕込むことにした.

まず,次のようなスクリプトを書いて/usr/local/sbinあたりに放り込んでchmod 755する.

  • /usr/local/sbin/update-ports-cron.sh
#!/bin/sh
# $Id: update-ports-cron.sh 204 2008-06-15 11:30:39Z genta $
( /usr/sbin/portsnap fetch && /usr/sbin/portsnap update ) 2>&1 >/dev/null
/usr/local/sbin/pkgdb -F

echo "---- portversion:"
/usr/local/sbin/portversion -vL=
echo

echo "---- portupgrade:"
/usr/local/sbin/portupgrade -aRP --batch
echo

echo -n "Finished at: "
LANG=C date

次に,/etc/crontabに以下の行を追加.

0 5 * * * root /usr/local/sbin/update-ports-cron.sh

これでうまく行くんじゃないだろうか.いくといいな.