2010年02月06日
川俣晶の縁側ソフトウェア技術雑記total 7331 count

FreeBSDを6.3から8.0にアップグレードした際のメモ

Written By: 川俣 晶連絡先

 FreeBSD 6.3のサポートが切れるというメールが来たのでFreeBSD 8.0にアップグレードしたところ、驚くほど面倒な手間と膨大な時間が掛かり、メインのメールサーバがほぼ1日ダウンするという事態に陥りました。おそらくゼロから入れ直して再設定するよりも時間が掛かっています。

 以下はその件についてのメモです。

なぜアップグレードに踏み切ったのか §

 サポート切れだというメールが来たこと。

 もう1つは、freebsd-updateは何回も使ってきましたが、メジャーバージョンアップにも対応すると分かったので。たとえば"freebsd-update upgrade -r 8.0-RELEASE"です。

なぜアップグレードは遅いのか §

 理由は3つあります。

  • ファイルを操作するためにいちいちrmやmvを起動しているから。(別の仮想コンソールから入ってps axで見ているといろいろな子プロセスが生成されている)。プロセスの生成はオーバーヘッドが大きく、これは明らかに無駄が多い。過剰に重くなるわけである
  • 8.0でライブラリが変更され、portsや自前のツールは全て再コンパイルが必要
  • portsの依存関係で驚くほど別のモジュールを使い場合がある (小ツールと思いきや、Rubyなどの多くのportsをmakeしに行ったportupgradeは愕然とした)

 そのほかに、やや古い世代のハードという要素を加味し、6.3から7.0へ一時的に上げるという作業、予期せぬトラブル対策を含めれば上手く行っても1日仕事でしょう。残業になったので、それ以上とも言えます。

間違い §

 以下のページを参考にして開始しましたが、portinstall misc/compat7xが通らず、そこからは自分でリリースノート等を見ながら手順を自分で考えながら進めました。

 つまり、このページは参考にせず、FreeBSD Update to 8.0-BETA1のUpdate手順を参考にした方がおそらくより確実ですが、更に配慮が必要です。

具体的な注意点 §

  • portsが古いとmisc/compat7xが入っていないのでmakeできない
  • この場合、portsnap fetch updateを実行しても、それだけでは入らない。これは落として更新するだけか? (新規の展開はportsnap extractだったか?)
  • portinstallも標準では入っていないようだ
  • portupgradeはportsから入れる必要があるようだ
  • portupgradeを何もない状態から用意するのは驚くほど時間が掛かる。portをすべて展開し直すのに時間が掛かる他に、makeも時間が掛かる。なぜか違うバージョンのRuby2つを含む膨大な依存関係があるからである
  • こうして依存関係からmakeされるRubyは、使いもしない膨大なドキュメントも登録してくれるので、尚更時間が掛かる
  • 6.3から7.0にするだけでも既に一部にバイナリーの非互換性があるようだ (不詳)
  • rm /var/db/pkg/pkgdb.dbという手順は古すぎる環境からのアップグレードで意味がないかもしれない (そのファイルは無かった)
  • portupgrade -afは、6.3時代に入れたportsをアップグレードしてくれないのかもしれない。後から入れた分しか更新してくれなかった
  • 古い時代のportsは1つ1つmake clearn、make deinstall、make installで入れ直した (が、misc/compat7xを入れて対処できた可能性もある)
  • /usr/ports/X11/xorg-clientsのmakeが壊れていると文句を言ってきたので、これは外した。どのみち、サーバでX11は使ってないから関係ない
  • 多くの設定ファイルはviが立ち上がって手動修正が必要だが、過去の定義と新規の定義の両方を含むファイルが開くので、少なくとも一方を手動で消す必要がある。この手順を間違えると何らかの機能が動かなくなる (最悪、ログイン不能もあり得る。named.confの編集に失敗してnamedが立ち上がらず、かなり時間を使った)
  • ログインシェルにbashを指定していると作業の途中でログイン不能になる。bashはportsから入れたものであり、再コンパイルが終了するまで起動できないからである (少なくとも作業に使うアカウントのログインシェルはシステムに標準で含まれるcsh等にしておくべき)
  • portsの再makeは常に成功するわけではない。依存関係にある別のportsが非互換バイナリーとしてコンパイル済みだと、再make不要と見なされるが動かないのでエラーになる。この場合、そうやってエラーになったportsを見極めて、それも手動で再コンパイルしなければならないようだ
  • 自分で書いたCソースは自分で再コンパイルと配置しなければならない。自動ツールが何かしてくれるわけではない

反省点 §

  • いきなりメジャーバージョン2つ上げるのは怖かったので、6.3から7.0に上げてから8.0にしたが、これは大いなる時間の無駄であった。いろいろな設定を保存した上で8.0をゼロから入れた方がずっと速かったと思われる
  • 7.0に上げた時点で動作していなかった機能がいくつもあるようだが、よく確認しなかった。7.0を完全に動作するまで仕上げるべきであった
  • ネットの情報を鵜呑みにした (英語読みたくなかったから、日本語の情報に逃げた、ともいう)
  • そもそも"freebsd-update upgrade -r 8.0-RELEASE"一発でメジャーバージョンアップという認識が間違っていた。そのあとでfreebsd-update installを再起動を挟んで少なくとも3回実行する必要があり、それほど簡単ではなかった。いや、正確にはfreebsd-update installが必要という認識はあったが、3回必要という認識は無かった。確認不足
  • かなり試行錯誤した。結局、portupgradeをかなり時間をかけて入れて実行したが、結局無くても同じだった。misc/compat7xも結局使わなかった。というか、事前調査不足でかなり無駄が多すぎ。misc/compat7xを入れていれば、もうちょっと違う手順があり得たかも知れない

感想 §

  • ずっとむかし、FreeBSDはLinuxよりも出来が良かったら採用したが、今時のFreeBSDは必ずしも出来が良いわけではないようだ。Linuxはもうとっくにインストールしていないので全く知らない (たまにKNOPPIXを仮想CDから仮想マシンにブートする程度だ)。比較の対象はWindowsサーバになるが、それと比較して桁違いに品質、使い勝手で物足りない
  • いちいちソースからコンパイルする手順は、単に入れて使うだけの場合は全く無駄である。makeする画面を見て喜ぶのはマニアだけかも知れない
  • オマケが多いことはマニアとしては嬉しいかも知れないが、単に使いたいだけの人から見れば「不要品の抱き合わせ」としか見えない
  • 文字だけずらずらと出ても進行状況を示すグラフが出ないので、makeの進行状況も全く分からない。そもそも、あとどれぐらい待てばいいのかが分からないと、放置して別の作業もなかなかできない。せめて前半か後半かぐらいは分かると良い
  • とりあえず、アクセスがあるサーバをほとんど1日止めてしまう作業は心臓に悪い (かといって、サポート切れが宣言されたOSを動かし続けることも心臓に悪い)
  • なに、ハードが古すぎるから遅いのだって? その要素は否定しないが、マシンに対して相対的に想定される処理時間が長すぎるわけだ
  • 既に自前でサーバを持つのも面倒になってきた。そろそろサーバの管理者をやめる潮時かな? もちろん、私が引退するという意味ではなく、サーバのハードを外部において管理を委託するという意味

 とはいえ、procmailで受信メールを仕分けする複雑なシステムがあるので、少なくともそれが動いているうちは手元にメール用サーバ無しはあり得ないかな。ファイルサーバは別として。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2010年
03月
09日
Ctrl+Alt+DelはNMIなのかという疑問
3days 0 count
total 7128 count
【技術雑記】の前のコンテンツ
2010年
01月
28日
iPodではないiPadは何の夢を見るか?
3days 0 count
total 3815 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20100206111439
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.