FreeBSDの醍醐味のひとつは、とっても簡単な操作で、OSをソースからコンパイルしてOSのバージョンアップができること、なんじゃないでしょうか。
本当は正しくない方法なんですが、以下の5個のコマンドだけで、バージョンアップできるという・・・
csup supfile
make buildworld
make buildkernel
make installkernel
make installworld
・・・本当は正しくないんですよ。ブートしなくなる可能性もあるのでマネをしないでください。
正しい方法は、以下を参考にしてください。
- /usr/src/Makefileの冒頭部分のコメント
- http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
- http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html
☆
昔に比べたら今のパソコンの処理速度はものすごく向上しているのですが、それでもまだまだ、make buildworldが終わるまで、時間がかかります。
その時間を節約するための手段として、「使わないものはビルドしない」ということが可能です。
以前は、その指定を/etc/make.confで行ってましたが、FreeBSD 7.0-RELEASEあたりからは、/etc/src.confというファイルに変更されています。
詳しい情報は、マニュアルを参照してください。
http://www.freebsd.org/cgi/man.cgi?query=src.conf&manpath=FreeBSD+7.0-RELEASE
たとえば
% cat /etc/src.conf
WITHOUT_ATM=1
WITHOUT_KERBEROS=1
WITHOUT_GPIB=1
WITHOUT_I4B=1
WITHOUT_PROFILE=1
なんて風なことを書いておいたんです。
Kerberosをかなり昔、苦労してセットアップしてみて、「う~ん、めんどくさすぎて、普段からこんなのを使うのは、やってられない!」という感想をもっていたので、「ああ、Kerberosなんていらないね」と思って、さっさとビルド対象から抜いてしまったのです。
・
・
・
これでいいかと思ってたんです。
違いました。
src.confにWITHOUT_KERBEROSを書くということは、それは
make buildworldのときにKerberosがコンパイルされないし、
インストールもされない
ということを意味するだけで、元々インストールされていたKerberos関係のファイル、ライブラリやヘッダファイルは、そのまま残っていたのでした。
ちなみに、make delete-oldすると、中途半端にファイルを消されたような気もします。
しかも、make installworldするたびに、他のファイルは更新されていくのに、Kerberosのファイルは古いまま。
あー、消しちゃえばいいのね。
と思って、消しました(別のディレクトリへ移動させた)。
そうしたら、今度は、portupgradeを使って、portsでインストールしたソフトのバージョンをするときに、ときどき、コンパイルエラーがでるようになりました。
たとえば、
/usr/bin/ld: cannot find -lgssapi
なんてエラーがでたり。これって、こういうことでした。
- これは、Kerberosがインストールされていたころに、
- portsでインストールしたソフトAがある。Aは共有ライブラリなど。
- Aは、Kerberosに依存していた
- 同じく、Aに依存したソフトBがある。
- Kerberosを削除した。
- ソフトBをバージョンアップするとき、Aが参照され、それに引きずられて、Kerberosも参照された
- Kerberosがないからエラー
たとえば、 /usr/local/lib/libtotem-plparser.la というファイルの中に-lgssapiがあったので、/usr/lib/libgssapi.soが無くなると、エラーになってしまうのでした。
つまり、Kerberosに依存したportsも、全部再インストールしなくちゃならない、ってこと。しかも、Kerberosが使うのがデフォルトになったportsもあったりで、ああ、もうめまいが…
というわけで、src.confから、WITHOUT_KERBEROS=1を削除して、/usr/src以下の、Kerberosのディレクトリに行って、make installしました。
完全敗北。
「Kerberosを入れたくないなら、最初からインストールしないようにする」
これが正解らしいです。
人生いろいろや
0 件のコメント:
コメントを投稿