freebsd-updateを使いたければRELEASEにしとかないとだめ

freebsd-update(8)を使ってシステムをアップデートしたい人は,セキュリティブランチ(RELENG_7_0等)でcsupしてビルドしましょう.freebsd-update(8)はRELEASEのみをサポートしているので,うっかりSTABLEをビルドするとはまります.

いきさつ

RELEASE-6.2なシステムを7.0-STABLE(RELENG_7)に上げた.

% uname -a
FreeBSD yourhost.yourdomain 7.0-STABLE FreeBSD 7.0-STABLE #1: Sun Jun 15 02:29:39 JST 2008
root@yourhost.yourdomain:/usr/obj/usr/src/sys/GENERIC  i386

次回からは,自分でちまちまとビルドしたりといった作業は避けたかったので,freebsd-update(8)を試す.ところが,下記のようなよくわからないエラーとなりだめ.

% sudo freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching public key from update1.FreeBSD.org... failed.
No mirrors remaining, giving up.

素直にエラーメッセージだけを読むと,update1.freebsd.orgが落ちているように読めるが,pingは通るし当該サーバが落ちたという情報も特に見当たらない.
そこで,エラーメッセージでググるFreeBSD PR: misc/12137に行き着いた.がーん,これだ.ショック.
あと,よく見るとfreebsd-update(8)のmanにも「RELEASEしかサポートしてないもんね」と書いてあった.がーん.

回避

(1) RELENG_7_0でビルドし直す.RELENG_7_0を指定してcsupし,通常の手順でビルド (/usr/src/UPDATINGを参照)
(2) 再度freebsd-update
これでうまくアップデートできるようになった.しかし,あまりSTABLEとの差が大きかったらはまったかもしれないので,お勧めはできない.