管理している FreeBSDサーバーから、自動パッケージメンテナンスがエラーになったと記録されてデイリーレポートが送られてきました。
/usr/sbin/portsnap: cannot open de7f291484bf265db8fdb34d727b142e4e5a24302052e143624ae384e38e07c0.gz: No such file or directory
Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found.
Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Thu Apr 1 02:05:17 JST 2021 to Thu Apr 15 02:12:31 JST 2021.
Fetching 5 metadata patches... done.
Applying metadata patches... done.
Fetching 5 metadata files... metadata is corrupt.
過去にも送られてきたことがあるメッセージで、/var/db/portsnap か /usr/ports 下のファイルが壊れたことを示すメッセージです。または、freebsd.org ports サーバー側のファイルが壊れたか。
今回は、5台のサーバーが全て metadata is corrupted. になっていたため、恐らくサーバー側の問題だろうと放置していました。
しかし、数日しても直らない。
仕方がないので、手動で「portsnap fetch update」を発行したところ、5台中4台は復活。
しかし、1台だけ修復できません。
コマンドのエラーメッセージだけでは原因が判らなかったのですが、ふと、portsnap には debugオプションが隠しモードになっていることを思い出しました。
–debug を付加してコマンドを実行してみたのが以下。
# portsnap --debug fetch update Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found. Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org... fetch: http://ipv4.aws.portsnap.freebsd.org/latest.ssl: No error: 0 failed. Fetching snapshot tag from ipv6.aws.portsnap.freebsd.org... fetch: http://ipv6.aws.portsnap.freebsd.org/latest.ssl: No address record failed. Fetching snapshot tag from metapeer.portsnap.freebsd.org... latest.ssl 256 B 284 kBps 00s /usr/sbin/portsnap: openssl: not found invalid snapshot tag. Fetching snapshot tag from your-org.portsnap.freebsd.org... latest.ssl 256 B 286 kBps 00s /usr/sbin/portsnap: openssl: not found invalid snapshot tag. No mirrors remaining, giving up.
なんと、openssl コマンドが消えている!openssl が無くなってしまい、サーバーとHTTPS接続できなくなったのが原因のようです。パッケージをメンテナンスしていると、時々予想外のコマンドが道連れ削除されてしまうんですよねぇ。そういえば数日前に、50個以上の大量パッケージがアップデートされたことを思い出しました。
pkg install openssl で、openssl を再インストールし、portsnap コマンドを手動発行して問題解決。
ひょっとすると、ports データベースが壊れたのは、大量のパッケージ更新を行ったことと関係しているのか。