今朝、ports コレクションのバージョンチェックをしてみたら、boinc クライアントにアップデートが発生していましたので、早速アップデートする事にしました。
boinc-client-7.0.25_4 < needs updating (port has 7.0.25_5)
boinc-client 以外にもアップデートがあったので、portupgrade -a を実行。
今回は、更新中にエラーが出てしまったので記録を残しておく事にします。
===> Installing for freeglut-2.8.0 ===> freeglut-2.8.0 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found ===> freeglut-2.8.0 depends on file: /usr/local/libdata/pkgconfig/xi.pc - found ===> freeglut-2.8.0 depends on file: /usr/local/libdata/pkgconfig/xxf86vm.pc - found ===> freeglut-2.8.0 depends on file: /usr/local/libdata/pkgconfig/xrandr.pc - found ===> Generating temporary packing list ===> Checking if graphics/freeglut already installed ===> An older version of graphics/freeglut is already installed (libglut-7.6.1) You may wish to ``make deinstall'' and install this port again by ``make reinstall'' to upgrade it properly. If you really wish to overwrite the old port of graphics/freeglut without deleting it first, set the variable "FORCE_PKG_REGISTER" in your environment or the "make install" command line. *** Error code 1 Stop in /usr/ports/graphics/freeglut. *** Error code 1 Stop in /usr/ports/net/boinc-client. ** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20120806-33929-12sdujk-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=boinc-client-7.0.25_4 UPGRADE_PORT_VER=7.0.25_4 make ** Fix the problem and try again. ** Listing the failed packages (-:ignored / *:skipped / !:failed) - japanese/mutt (port directory error) - graphics/libglut (port directory error) ! net/boinc-client (boinc-client-7.0.25_4) (unknown build error) Stop in /usr/ports/net/boinc-client. *** Error code 1
原因は、依存関係があるライブラリーのアップデートのようです。
エラーメッセージの指示に従い、/usr/ports/graphics/freeglut に移動して、make reinstall を行ってみました。
===> Documentation installed in /usr/local/share/doc/freeglut. ===> Examples installed in /usr/local/share/examples/freeglut. ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for freeglut-2.8.0
こんな感じで、問題のパッケージはインストール出来たみたいですが、さて boinc-client までインストールが進むかな?
# portupgrade boinc-client-7.0.25_4
としたら、
In file included from /usr/local/include/wx-2.8/wx/gtk/dcclient.h:13, from /usr/local/include/wx-2.8/wx/dcclient.h:24, from /usr/local/include/wx-2.8/wx/wx.h:49, from stdwx.h:48, from CompletionPage.cpp:22: /usr/local/include/wx-2.8/wx/dc.h:1: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. *** Error code 1 Stop in /usr/ports/net/boinc-client/work/boinc-client-7.0.25/clientgui. *** Error code 1
となってしまいましたが、今度はライブラリとは無関係のようです。最近k6マシンで「internal compiler error: Segmentation fault」出る事があります。boinc が仮想記憶を酷使しているためだと思いますが、夏場でHDDやメモリの温度が上がっている可能性もあるかもしれません。このエラーの場合、ソースファイルのダウンロードからやり直すと解決する事が多いようです。
そこで、/usr/ports/net/boinc-client に移動した後、
# make clean distclean
# make
# make install
===> Generating temporary packing list ===> Checking if net/boinc-client already installed ===> An older version of net/boinc-client is already installed (boinc-client-7.0.25_4) You may wish to ``make deinstall'' and install this port again by ``make reinstall'' to upgrade it properly. If you really wish to overwrite the old port of net/boinc-client without deleting it first, set the variable "FORCE_PKG_REGISTER" in your environment or the "make install" command line. *** Error code 1 Stop in /usr/ports/net/boinc-client. *** Error code 1 Stop in /usr/ports/net/boinc-client.
と、エラーでまた止まってしまいます。
確かに!自動でアンインストール、インストールしてくれる portupgrade コマンドではなく、手動インストールのmake コマンドを使っているため、手動でアンインストールが必要ということのようです。
# make deinstall
# make reinstall
これで boinc-client のアップデート完了。結局更新作業に4時間くらい掛かってしまいました。
K6-2 遅い!
その後、 /var/log/messages をチェックして見たら、こんな記録が残っていました。
Aug 6 07:43:22 host kernel: swap_pager_getswapspace(11): failed Aug 6 07:43:22 host kernel: swap_pager_getswapspace(6): failed Aug 6 07:46:41 host kernel: swap_pager: out of swap space Aug 6 07:46:41 host kernel: swap_pager_getswapspace(16): failed Aug 6 07:46:42 host kernel: pid 32148 (minirosetta_3.31_i6), uid 1003, was killed: out of swap space Aug 6 07:46:42 host kernel: pid 32147 (minirosetta_3.31_i6), uid 1003, was killed: out of swap space
仮想メモリ不足が発生していたみたいです。時々スワップ残量を確認して、boinc-client にメモリを解放させるためプロセスをリスタートさせないといけないかもしれません。
このあと、/usr/local/etc/rc.d/boinc-client start として、boincクライアントを再起動。あとはWindows PCからコントロールできます。
後日談ですが、
===> An older version of graphics/freeglut is already installed (libglut-7.6.1)
が出る場合の対処方法は /usr/ports/UPDATING に書いてありました。
portmaster コマンドを使用して旧バージョンパッケージと新バージョンパッケージを変更するというのが正しい対処方法だったようです。
# portmaster -o graphics/freeglut graphics/libglut
# portmaster -r freeglut