FreeBSD boinc クライアントアップデート

今朝、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からコントロールできます。

Comments

  1. 後日談ですが、
    ===> 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

コメントを残す