MacOSX 10.5.8 に clamav
かなり古いMac mini (2007年のCore 2 Duo)のメンテをして、ウイルス対策をほどこすことにしました。といってもMac mini自体のウイルス対策をするというよりは、プロキシと組み合わせてウイルススキャンゲートウェイとし、他のPCのインターネットアクセスを保護しようという使い方をしています。プロキシにはsquid-3.4.13、ウイルススキャンにはclamav-0.99、間をつなぐのはc_icap-0.4.2 + c_icap_module-0.4.2 で構成しました。『icap連携をしてみる』や『ウイルス対策の組込み(ClamAV)』を参考にしつつ、全てセルフビルドで構成してみました。
中でも古いMacOSX 10.5.8にclamavの導入には苦労したので、備忘録をここに残しておこうと思います。必要なライブラリ(最低限zlib)が揃っていれば configure && make && make install まで通るのですが、いざ動かしてみようとすると、例えばウイルス定義データベースを更新するfreshclamを実行すると
ERROR: Verification: Malformed database
となって死んでしまいます。これは結局のところ、MacOSX 10.5.8に入っているzlibが古くzlib-1.2.3であることが原因でした。以下、対処方法を書いておきます。
気を取り直して最も新しいzlib-1.2.8をビルド、インストール。なお元からある古いものはそのままにしておきたいので、別のディレクトリ(ここでは /usr/local/zlib)にいれることにします。
$ tar zvxf zlib-1.2.8.tar.gz
$ (cd zlib-1.2.8 && ./configure --prefix=/usr/local/zlib && make && sudo make install)
zlibはlibxml2とも依存関係があるようなのでlibxml2も更新。
$ tar zvxf libxml2-2.9.3.tar.gz
$ (cd libxml2-2.9.3 && ./configure --prefix=/usr/local/libxml2 --with-zlib=/usr/local/zlib && make && sudo make install)
そして上記のライブラリを見るようにclamavをビルド、インストール。ちなみにopensslも古いものだと良くないので /usr/local/ssl に新しいものを作ってあることを想定しています。
$ tar zvxf clamav-0.99.tar.gz
$ (cd clamav-0.99 && ./configure -with-openssl=/usr/local/ssl --with-zlib=/usr/local/zlib --with-xml=/usr/local/libxml2 && make && sudo make install)
これを気を取り直してfreshclamをかけてみると通りました。念のため調査してみます。
/usr/local/lib/libclamav.dylib:
/usr/local/lib/libclamav.7.dylib (compatibility version 9.0.0, current version 9.1.0)
/usr/local/libxml2/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.3.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.7)
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/local/ssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/ssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/zlib/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
/usr/local/lib/libpcre.1.dylib (compatibility version 4.0.0, current version 4.6.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
うまくいきました。最悪リンクしているライブラリが違う場合はinstall_name_toolを使って強引に修正するということも可能です(『otool と install_name_tool を使ったライブラリのパス変更』に詳しい)。
さらに追記ですが、c_icap-0.4.2、c_icap_modeule-0.4.2には、ビルド前に以下のパッチをあてて対応しています。
パッチをあてることで、c_icap-0.4.2はビルドエラーの修正、c_icap_modeule-0.4.2はファイルソケットに対応できる(clamd_mod.ClamdSocketが使える)ようになります。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。