make installworld で libc.so.7 が消える

FreeBSD 7-stable の ZFS 環境でハマりました。
make installworld を普通に実行したらまもなく以下のようなエラーが。

===> lib/libc (install)
install -C -o root -g wheel -m 444 libc.a /usr/lib
install -C -o root -g wheel -m 444 libc_p.a /usr/lib
install -s -o root -g wheel -m 444 -fschg -S libc.so.7 /lib
install: /lib/libc.so.7: chflags: Invalid argument

ZFS では似たようなメッセージをよく見るので(そして無視しても問題ないので)こんなモンだろうと思って手動でコピーする。が

/libexec/ld-elf.so.1: Shared object "libc.so.7" not found, required by "cp"

libc.so.7 がいなくなってる!
cpls もできなくなってる!
ちょっとビビりましたが、

cd /rescue
echo *

cpls がいるのを確認して、

/rescue/cp /usr/obj/usr/src/lib/libc/libc.so.7 /lib
strip /lib/libc.so.7
chmod 444 /lib/libc.so.7

とりあえずこれで安心して ls とかが使えるようになりました。

復旧はこれでいいとして、この先進めないのでいろいろ調べてみると同様の事例が散見されました。
ここがわかりやすいですが、以下のようにしてあげるのが正解なようです。

make NO_FSCHG=true installworld

すんなりいけました。

FreeBSD

Posted by yokky