先日から FreeBSDサーバーのメンテナンスを継続してボチボチ行っていて、しばらく放置していた Raspberry Pi2 上のFreeBSD11.1。
root@rpi2:~ # uname -a FreeBSD rpi2 11.1-RELEASE FreeBSD 11.1-RELEASE #0 r321309: Fri Jul 21 14:27:25 UTC 2017 root@releng2.nyi.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/RPI2 arm
こいつも、OSのパッチレベルとパッケージを最新にしておこうと、freebsd-update コマンドを発行したところ、メンテナンスできない!
エラーは出ていないものの、update.freebsd.org が見つからないとのこと。
root@rpi2:~ # freebsd-update fetch src component not installed, skipped Looking up update.FreeBSD.org mirrors... none found. Fetching public key from update.FreeBSD.org... failed. No mirrors remaining, giving up.
ええ〜〜?どういうこと?
nslookup update.freebsd.org とやってみたところ、出たよ〜。
root@rpi2:~ # nslookup update.freebsd.org Shared object "libdl.so.1" not found, required by "nslookup"
先日のトラブルですよ。FreeBSD11.1 では、/usr/lib/libdl.so.1 が存在しないバグがあるって修復される見込みはないって事。ということは、freebsd-update でOSを上げられないって事?
ただ、pkg upgrade コマンドは動く。nslookup コマンドは現在はオプションになっていて、host, drill でホスト名解決できるはず。
root@rpi2:~ # host update.freebsd.org update.freebsd.org is an alias for update1.freebsd.org. update1.freebsd.org has address 163.237.247.16 update1.freebsd.org has IPv6 address 2001:4978:1000::2319:16 update1.freebsd.org mail is handled by 0 .
動くじゃない!
freebsd-update コマンドには、ヘルプやオンラインマニュアルでは表示されないデバッグオプションがあって、–debug を付けてるとデバッグ情報を表示することが出来ます。
やってみると、
root@rpi2:~ # freebsd-update --debug fetch src component not installed, skipped Looking up update.FreeBSD.org mirrors... none found. Fetching public key from update.FreeBSD.org... fetch: http://update.FreeBSD.org/11.1-RELEASE/arm/pub.ssl: Not Found failed. No mirrors remaining, giving up.
となり、サーバー上に、pub.ssl ファイルが見つからないと出ます。
サーバーの問題?
Webブラウザーのアドレスフィールドに “http://update.FreeBSD.org/11.1-RELEASE/arm/pub.ssl”と入れてみると、
404 Not Found nginx/1.14.0
となります。実際に、ファイルが無いようです。
しかし、URLの arm 部分を i386 に置き換えて、アドレス部分を
http://update.freebsd.org/11.1-RELEASE/i386/pub.ssl
としてみると、あら〜、pub.ssl がダウンロード出来るわ。
ということは、Rasberry Pi2 ではOSのメンテナンスはお手軽には出来ないって事になりそう。
Raspberry Pi2 をサーバーとして使おうか検討を始めたところだったので、この結果は厳しい現実となりました。
ports の方は、pkg コマンド(パッケージメンテナンス速度がi386と比べて劇遅なものの)が使えるので、Raspberry Pi2をサーバーとして使っても短期的には問題なさそうですが、OSを更新できない訳ですから、サポート切れでパッケージメンテナンスできなくなると、別の Raspberry Pi2 で新しいOSイメージビルドするなりインストールするなりした後、コンテンツをコピーしてmicroSDごと交換するような更新方法を考えざるを得ません。
FreeBSD以外の、本来のRaspberry Pi用Linux OSを使えばいいのかもしれませんけど、複数種類のサーバーOSを管理するのも大変なのですよ。
Raspberry Pi は、3や3B+ も発売されてパワフルになってきていますが、FreeBSDの対応はLinuxに比べて遅れ気味。開発リソースを考えれば当然なんですが、今のところ本格サーバーとしての使うべきものじゃないんでしょうね。