FreeBSD 8.4: portsnap : metadata is corrupt.

先日 FreeBSD 8.4 に freebsd-update コマンドを実行したところ、

WARNING: FreeBSD 8.4-RELEASE-p34 HAS PASSED ITS END-OF-LIFE DATE.
Any security issues discovered after Sat Aug  1 09:00:00 JST 2015
will not have been corrected.

が最後に表示されました。

OSのセキュリティー更新が止まるからとといって、OSのバージョンアップを行う必要は全くありません。基本的にはファイヤーウォールで不要なネットワークポートを塞いであれば、残りの開いているポートで動いているアプリケーション・サービスにセキュリティー上の問題がないか日々チェックしていればいいだけ。オープンしているポートにOS依存のセキュリティーホールがなければ、アプリケーションのサポートがある限りセキュリティー関係のサポートを気にする必要はありません。とはいえ、FreeBSDの場合、サポート切れバージョンを使っていると、近いうちに ports メンテナンスができなくなるので、結局はセキュリティーホールを持つアプリケーションが出てきたときに穴を塞げなるなるため、出来るだけサポートがあるバージョンのOSに更新する方がいいことは間違いありません。

FreeBSD 9.2 に今の私の 8.4の環境を移せることは分かっているので、最近、そろそろアップデート時期かなと感じています。

そう思っていたところ、ports コレクションに対するアップデートのため深夜にcron で portsnap を実行していますが、

# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Fri Aug  7 02:59:28 JST 2015 to Sat Aug  8 16:46:23 JST 2015.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... /usr/sbin/portsnap: cannot open 35875e054bb4153a1f41f44af6e6a4c0ba4c3dad9140e7b0253999cf2ef16d4e.gz: No such file or directory
metadata is corrupt.

という結果が記録されていました。

これが、FreeBSD 8.4 に対するサポート終了と関係するのかどうか分かりませんが、FreeBSD 8.4 のテストマシンで確かめてみることにしました。

まず、freebsd-update コマンドで 8.4 から 9.3 へ OSを更新。テストマシンなので、y, y, y とタイプして完了。(時間は掛かりましたけどね。)

そして、portsnap を発行したところ、、、、、、同じでした。OSのバージョン、関係なし!

 # portsnap fetch && portsnap update
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Thu Aug  6 02:50:53 JST 2015 to Sat Aug  8 16:46:23 JST 2015.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... /usr/sbin/portsnap: cannot open 35875e054bb4153a1f41f44af6e6a4c0ba4c3dad9140e7b0253999cf2ef16d4e.gz: No such file or directory
metadata is corrupt.

想像できたことですが、サーバー上のファイルが壊れているか無くなっているかのような気がしますが、ローカルの /var/db/portsnap が壊れた可能性もあります。

試しに、/var/db/portsnap の中身を全部消して portsnap fetch と portsnap update をかけたところportsnap が復活しました。OSのサポートとは関係ないようで、cron で portsnap を掛けたときにサーバー上から変なタイミングのファイルをダウンロードしてしまったのかもしれません。

OSをメジャーアップデートしてしまったので、pkg コマンドに全部ワーニングメッセージが表示されます。

# pkg audit -F
pkg: Warning: Major OS version upgrade detected.  Running "pkg-static install -f pkg" recommended

ということで、素直にpkg-static コマンドを発行することにして、portsnap コマンドがエラーを吐く問題は、切り分けと対策完了ということにします。

2016/08/17 追記:

同様の問題が、新規にインストールした FreeBSD 9.3 でも発生しました。

残念ながら、今回は /var/db/portsnap ディレクトリを初期化しても解決せず。

コメントを残す