OSのアップデート作業は気をつけてやろうね、って話。
FreeBSDのバージョン6系は、バージョン4、5と比べて出来がいいという、~~~ちょっと眉唾な気がしないでもないのですが~~~そんなレポートを見てしまったので、先日、仕事で使っているFreeBSDマシンを、バージョン5.5-PRERELEASEから6.1-RELEASEへ、make buildworld&installworldしてアップデートしました(実際には、あらかじめ別マシンでbuildworldしておいたのをinstallworldしただけなので、楽ちん)。
これまで、バージョン番号の一番上の桁が上がるときは、まっさらの状態からインストールしていたのですが、6.0がでたときに、あまっているマシンでmake buildworldでアップデートして、とくに問題なくうまくいった記憶があったもので・・・
で、そうそう、うまくはいきませんでした(笑)。
X Window Systemで、日本語表示をするアプリは、軒並み日本語で表示できなくなったり、perlでは、ja_JP.eucJPというlocaleがサポートされてないとかいうwarningメッセージが連発・・・
あ、そういや、前回も、そんなことがあって、portsをほぼ全部コンパイルしなおしたんだったっけ・・・
6.0Rは数ヶ月前のことだったので、すっかり忘れてました。
このへんに
http://journal.mycom.co.jp/articles/2005/11/07/freebsd/003.html
そういったトラブルの話がのってました。
portsのmisc/compat5xをインストールしてやればいいらしいのですが、結局、なんかよくわからないけど、うまくいかなかったです。それに、
- 互換性ライブラリをいれるのって、なんか後ろ向きじゃない?
- やっぱり男なら、たとえシステムダウンしたとしても、前のめりにぶっ倒れよう!
ってことで、やっぱり今回も、「portupgrade -f ~」で、ガシガシとコンパイルしなおしてしまいました。
もっとも、OSアップデート後、ぜんぜん動かなくなってしまうってことはなくて、どこかちょっと変かも・・・って程度には動くので、動かしながら直していく、ってことができます。ここが、FreeBSDのいいところかな~って個人的には思っています。
この前、Fedora Core3からCore 5へアップデート作業をやってみたのですが、まずはOSのアップデートに2時間ほどかかり、その間は、まったくマシンは使えません。さらにそのあと、もう一度、インストール済みソフトのアップデート作業が1時間ほどかかりました(これは動かしながらできた)。
FreeBSDだったら、使えない時間って、10分くらいですみますからね。あとは、動かしながらアップデートできちゃいます(たまたま運が悪いとハマりますけど)。自己責任で好き勝手にやりたいならFreeBSD、失敗したくないならFedora、ってところでしょうか(いやFedoraも、そういうもんじゃないと思う・・・)。
あとで思ったのですが、/libや/usr/libに古いライブラリが残っているので、そっちのライブラリが使われてしまったため、せっかくいれたcompat5xが使われなかったのではないかと???
make buildworldでOSのバージョンを更新したり、インストーラを使ってupgrade installをした場合、基本的に、古いファイルは削除してくれず、単に上書きインストールするだけなんですよね・・・トホホ
というわけで、FreeBSDでOSをアップデートしたときは(upgrade installしたときも、buildworldしたときも両方)
- /lib /usr/libとかから古いライブラリを削除
- /usr/includeとかからも、古いヘッダファイルを削除
する必要があります。ライブラリが古いかどうかの判断は、ファイルのタイムスタンプで判断しているのですが(新しいファイルはアップデートしたときの日付になってるので区別できる?)、ヘッダファイルってどうなってましたっけ???
(2006年5月25日 追記)
make buildworld & installworldした場合、ヘッダファイルが変更されていないときは、タイムスタンプは変化しないみたいなので、古いからって、削除しちゃだめみたいです。installworldするまえに、
mv /usr/include /usr/include.old
しちゃうのはどうでしょう?
共有ライブラリに関してですが、
portsclean -Ln
というコマンドを実行すると、古いライブラリや同一バージョンのライブラリの重複などをレポートしてくれるようです。
** /usr/local/lib/compat/libradius.so.1 is shadowed by /usr/lib/libradius.so.1
/usr/lib/libradius.so.1 <- ?
/usr/local/lib/compat/libradius.so.1 <- compat5x-i386-5.4.0.8_5
--> This may be an undesirable situation
Leave /usr/lib/libradius.so.1 (specify -i to ask on this)
なお、ファイルを移動・削除したあと、/etc/rc.d/ldconfig restartを実行しても、/usr/local/lib/compatを参照してもらえないので、
/usr/local/etc/rc.d/000.compat5x start
を実行するといいらしいです。
0 件のコメント:
コメントを投稿