clamav-0.94 … Panther & Tiger & Leopard

なんだろ、ねぇ。
いつも通りのアップデート、と、タカをくくっていた。

手順は、まず、自宅マシンでアップデート、研究室サーバでアップデート、そして、職場公式サーバ等でのアップデート、と、進めるつもりだった。
自宅サーバMacmini Leopard Serverでは、うまくできた、の、が、そもそも、誤解の始まり、だ、な。
自宅Pantherマシン、そして、自宅Tigerマシンでは、makeすらできない。
いや、よくよく見ると、configureの段階で、

========== ========== ========== ========== ==========
checking for a supported version of gcc… ok (4.0.1)
checking for gcc bug PR27603… ok, bug not present
checking for gcc bug PR26763-2… ok, bug not present
checking for valid code generation of CLI_ISCONTAINED… ok, bug not present
checking for gcc bug PR28045… configure: error: your compiler has gcc PR28045 bug, use a different compiler, see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28045
========== ========== ========== ========== ==========

と、出てきやがった。
このあたりには、
gcc_select mp-gcc43
や、
gcc_select gcc431
で、対応可能だろう。ついでに、
port -d install apple-gcc42
なんて、後から考えると、無駄なこともしてみたりして。

さらによく見ると、
========== ========== ========== ========== ==========
checking for CHECK… no
configure: WARNING: unable to find ‘check’ using pkg-config:
No package ‘check’ found
Alternatively, you may set the environment variables CHECK_CFLAGS
and CHECK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
========== ========== ========== ========== ==========

なんだ、これ。
そうそう、Leopard Serverでも、
make check
するとエラーが出てきたのだな。
これに対しては、
port install check

と、モジュールを追加して解決。

従って、
1.port install check
2.gcc_select gcc431
3../configure –prefix=/usr/local/clamXav
4.make ; make check
5.make install

で、Leopard Serverは、解決!

問題は、PantherとTigerだ。
makeでエラーが出てしまう。

========== ========== ========== ========== ==========
/usr/bin/ld: warning can’t open dynamic library: /usr/local/clamXav/lib/libclamunrar.5.dylib referenced from: ../libclamunrar_iface/.libs/libclamunrar_iface.dylib (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
/usr/bin/ld: Undefined symbols:
_ppm_constructor referenced from libclamunrar expected to be defined in /usr/local/clamXav/lib/libclamunrar.5.dylib
_ppm_destructor referenced from libclamunrar expected to be defined in /usr/local/clamXav/lib/libclamunrar.5.dylib
_rar_init_filters referenced from libclamunrar expected to be defined in /usr/local/clamXav/lib/libclamunrar.5.dylib
_rar_unpack referenced from libclamunrar expected to be defined in /usr/local/clamXav/lib/libclamunrar.5.dylib
_rarvm_free referenced from libclamunrar expected to be defined in /usr/local/clamXav/lib/libclamunrar.5.dylib
collect2: ld returned 1 exit status
gmake[4]: *** [libclamav.la] エラー 1
gmake[4]: ディレクトリ `/private/tmp/clamav-0.94/libclamav’ から出ます
gmake[3]: *** [all-recursive] エラー 1
gmake[3]: ディレクトリ `/private/tmp/clamav-0.94/libclamav’ から出ます
gmake[2]: *** [all] エラー 2
gmake[2]: ディレクトリ `/private/tmp/clamav-0.94/libclamav’ から出ます
gmake[1]: *** [all-recursive] エラー 1
gmake[1]: ディレクトリ `/private/tmp/clamav-0.94′ から出ます
gmake: *** [all] エラー 2
========== ========== ========== ========== ==========

どう考えても、変だ。
ライブラリーの場所を間違えている。
あたしは指定していないのだけど…いや、正確には、
./configure –prefix=/usr/local/clamXav
と、指定してはいるね。

困った。
9/20からの週末、9/23の休日を潰して、試行錯誤。
始めからググっていれば良かったのだろうが、幸い、次の記事を見つける。
そう言えば、アンインストールしてからインストールしろ、と、READMEに書いてあったような気がする、が、これまでは、単純なオーバーライト・インストールでうまくできていたので…ライブラリーがなくて困った時があったが…

http://www.markallan.co.uk/BB/viewtopic.php?p=7070&highlight=#7070


従って、だ。

1.checkのインストールが先、これは変わらず。
port install check

2.gccはバグ無しを選択、これも変わらず。
gcc_select mp-gcc43
gcc_select gcc431

ちなみに、gcc (GCC) 4.1.2でも良かった。

3.古いファイルどもを消す!*
のは、怖いので、
cd /usr/local
mv clamXav clamXav_0.93.3
mkdir clamXav

4.configure、make
(1)Intel Mac
./configure –prefix=/usr/local/clamXav –build=i686-apple-darwin`uname -r`
gmake
gmake check
gmake install
…今回は、gmakeを使った。

(2)Power Mac
./configure CFLAGS=’-g’ –prefix=/usr/local/clamXav
↓どうやら、CFLAGSの指定は不要みたいだな。
./configure –prefix=/usr/local/clamXav
gmake
gmake check
gmake install

ただしっ
gmake check
の実行時、
========== ========== ========== ========== ==========
gmake[2]: `check_freshclam.sh’ に対して行うべき事はありません.
gmake[2]: `check_sigtool.sh’ に対して行うべき事はありません.
gmake[2]: `check_clamscan.sh’ に対して行うべき事はありません.
gmake[2]: `valgrind_tests.sh’ に対して行うべき事はありません.
gmake[2]: ディレクトリ `/private/tmp/clamav-0.94/unit_tests’ から出ます
gmake  check-TESTS
gmake[2]: ディレクトリ `/private/tmp/clamav-0.94/unit_tests’ に入ります
Running suite(s): cl_api
 cli
 jsnorm
 str
 regex
 disasm
 unique
 matchers
100%: Checks: 205, Failures: 0, Errors: 0
PASS: check_clamav
PASS: check_clamd.sh
PASS: check_freshclam.sh
PASS: check_sigtool.sh
PASS: check_clamscan.sh
*** valgrind not found, skipping test
SKIP: valgrind_tests.sh
======================
All 5 tests passed
(1 tests were not run)
======================
gmake[2]: ディレクトリ `/private/tmp/clamav-0.94/unit_tests’ から出ます
gmake[1]: ディレクトリ `/private/tmp/clamav-0.94/unit_tests’ から出ます
gmake[1]: ディレクトリ `/private/tmp/clamav-0.94′ に入ります
gmake[1]: `check-am’ に対して行うべき事はありません.
gmake[1]: ディレクトリ `/private/tmp/clamav-0.94′ から出ます
========== ========== ========== ========== ==========

と、いう具合に、valgrindに関するメッセージが出てきたけど、今回は、無視。

とりあえず、動いているみたい、だから、さ。

そうそう、configファイル、
/etc/clamd.conf
/etc/freshclam.conf

あたしは、これらに対して、

/usr/local/clamXav/etc/clamd.conf
/usr/local/clamXav/etc/freshclam.conf

をシンボリックリンクして使っている…
つまり、新規導
入したようなものだから、改めて、これらを設定することになってしまった。
いくつか、オプションが増えていたので、むしろ、積極的に、再設定すべき、なのだろう、な。


*よくよく考えてみると、この時と同じ、なのだから、

cd /usr/local/clamXav
mv lib lib0.93.3
mv etc etc0.93.3

だけで、いいように思う。
散々試して、職場公式サーバで確認した…
なんだか、ねぇ。


2 comments to this article

  1. シムーベ

    on 2012年10月2日 at 20:54:48 -

    macportは私も使っています。
    clamav は入れたことがないのですが,
    sudo port -d selfupdate
    sudo port -d sync
    を実行してから,再度インストールされてみてはいかがでしょうか(すでに試されているかも知れませんが…)。

  2. kumecchi

    on 2012年10月2日 at 20:57:13 -

    コメント、ありがとうございます。
    portに関しては、自動実行してしまおうかと思っています。できれば、cpanも自動実行したいのですが、時々、インターラクティブに回答する必要がありますから、毎月、定期的に手動実行ですね。
    ちなみに、portに関しては、次のようなCシェルスクリプトを作って、cronで実行、しようかと、研究中…次のスクリプトと同時に手動実行して様子見…です。
    root# cat portupdate
    #!/bin/csh -f
    #
    port -d selfupdate
    port -d sync
    port -du upgrade installed
    cpanに関しては、次のスクリプトを定期的に手動実行してます。
    root# cat cpanupdate
    #!/bin/csh -f
    #
    /usr/local/bin/perl -MCPAN -e ‘upgrade’
    さて、確かに、port searchで調べると、clamavの最新版がありました。
    問題は、コンパイラで、例えば、Tigerならgcc 4.0.1が使われてしまうのですよ。
    /usr/bin/に入っているコンパイラですな。
    実際にport install clamavを実行してはいませんが、恐らく、configureの段階でコンパイラのbugチェックがはじいてしまうと思います。
    gcc_selectも使っていますが、portに反映させる方法がわからなくて…
    で、まぁ、9台のサーバ全部で成功させることを考えると、手動での導入手順が確実、かなぁ〜、と、思いまして、ね。
    それと、MacPortsをイリーガルに使っていて…
    既に記事に書いたように思いますが、pathを増やしたくなくて、
    ln -s usr opt
    なんてことをしていて…
    svnを利用することもできると思います。
    こちらもpathが増えてしまうのが気に入らない。
    できるだけシンプルに進めたいのです、な。