「Server message: Unknown collection “ports-base”」が出て使えなくなった FreeBSD の ports メンテナンス用 cvsup。常時稼働中のサーバーは csup から portsnap に移行させましたが、その後、検索エンジンでメッセージ検索していたら、portsnap の他、subversion というツールでも ports ディレクトリをメンテナンス出来るという freebsd.org の記述を発見しました。既に設定済みの portsnap から切り替えるかどうかは別にして、まだ ports メンテナンスを cvsup のままにしている FreeBSD 8.3 サーバーを試しに subversion(コマンドは svn) に移行してみることにしました。その作業をメモしておきます。
subversion ですが、なぜか既にシステムにインストールされていました。パッケージの依存関係からインストール済みだったようです。
# ll /usr/local/bin/svn -rwxr-xr-x 1 root wheel 203568 9月 26 20:38 /usr/local/bin/svn
2012年9月26日にインストールした何かのパッケージと一緒に入ったみたいです。これはそのまま使う事にします。作業は、上記URLのFreeBSDハンドブックを見て行いました。
- まず、/usr/ports を ports.old にリネーム。
- 次に、以下のコマンドを発行。
# svn checkout svn://svn.freebsd.org/ports/head /usr/ports - 最後に、次のコマンドを発行。このコマンドは、cron に登録して定期的に発行すれば、ports メンテナンスをしてくれるようになるはずです。
# svn update /usr/ports
これで終了。えらく簡単ですし、/var/db/portsnap 下に大量のファイルを保存して /var を圧迫しないので、/var 容量に余裕がないマシンでは portsnap よりsubversion の方がいいんじゃない?というのが感想ですが、subversionの場合は、/usr/ports のサイズが大きくなるようです。
/usr/ports をメンテナンスにportsnap を使うか subversion によるかは、パーティションの残量や自ネットワークの通信ポート解放状況によって選ぶことになりそうです。subversion は svn ポート を使い portsnap はHTTPですからファイヤーウォールがsvnポートをブロックしている場合は portsnap を使うしかありません。