レンタルサーバなので自分でOSのバージョンを上げることができず、未だにFC4を使っている。そんな人も多いのではないでしょうか。
昨年まではclash-hatさんが古いディストリビューション用のパッケージ、FC4用のパッケージも配布してくれていたのですが、今年からCentOS5用しか配布してくれなくなった。
FC4にclash-hatさんのリポジトリを追加してyumでインストール&バージョンアップできていたのですが、
残念。
でもclamavに脆弱性が見つかったのでバージョンアップしなくては。
しかたがないので自分でリビルドすることにしました。
FC8用だとファイルやパッケージの構成が変わってしまうので、clash-hatさんのリポジトリからCentOS5用のSRPMを取得。
wget http://crash.fce.vutbr.cz/crash-hat/centos/5/clamav/clamav-0.93-2.src.rpm
そのままリビルドするとconfigureの途中でエラーになる。
rpmbuild --rebuild clamav-0.93-2.src.rpm
(省略)
checking for a supported version of gcc... ok (4.0.2)
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
FC4にバンドルされているgccにPR28045のバグがあるためコンパイルさせてくれない。
gccを4.3にバージョンアップするか、3.2~3.4にダウングレードするか、オプティマイズオプション(-O2)をやめてデバッグ(-g)でコンパイルすれば、コンパイルできる。
FC4にはgcc 4.0.2と3.2.3が入っている。
gccのバージョンアップはめんどいし、他への影響も大きいのでパス。
オプションの調整もSPECファイルの修正がめんどい。
手軽なところでgcc 3.2.3でビルドすることにしました。
SRPMをインストールしてSPECファイルを修正します。
rpm -i clamav-0.93-2.src.rpm
cd /usr/src/redhat/SPECS/
vi clamav.spec
viで編集。
%configure \
--program-prefix=%{?_program_prefix} \
上記の部分を下記のように書き換えます。
%build
CC=gcc32 ./configure \
--build=i686-redhat-linux-gnu \
--host=i686-redhat-linux-gnu \
--target=i386-redhat-linux-gnu \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
このSPECファイルでビルド。
rpmbuild --ba clamav.spec
今度はエラーも出ずにビルドが完了。
インストール(アップグレード)します。
cd ../RPMS/i386/
rpm -Fvh clamav-0.93-2.i386.rpm \
clamav-db-0.93-2.i386.rpm \
clamav-milter-0.93-2.i386.rpm \
clamav-server-0.93-2.i386.rpm
手動でウイルス定義ファイルを更新。
freshclam
もろもろのデーモンを再起動。
/etc/init.d/clamd restart
/etc/init.d/clamav-milter restart
/etc/init.d/freshclam restart
スキャンのテストを実施。
clamscan --infected --recursive /usr/share/doc/clamav-0.93/test/
/usr/share/doc/clamav-0.93/test/clam.cab: ClamAV-Test-File FOUND
/usr/share/doc/clamav-0.93/test/clam.exe.bz2: ClamAV-Test-File FOUND
LibClamAV Warning: RAR code not compiled-in
/usr/share/doc/clamav-0.93/test/clam.zip: ClamAV-Test-File FOUND
/usr/share/doc/clamav-0.93/test/clam.exe: ClamAV-Test-File FOUND
LibClamAV Warning: RAR code not compiled-in
LibClamAV Warning: RAR code not compiled-in
LibClamAV Warning: RAR code not compiled-in
LibClamAV Warning: RAR code not compiled-in
LibClamAV Warning: RAR code not compiled-in
----------- SCAN SUMMARY -----------
Known viruses: 266450
Engine version: 0.93
Scanned directories: 10
Scanned files: 48
Infected files: 4
Data scanned: 0.02 MB
Time: 3.864 sec (0 m 3 s)
RARがスキャンできてないけれど、これはビルド時にRARのライブラリが入ってないのでしょうがない。
FC4にはライブラリ入ってないし。まぁいいや。
とりあえず他は無事検出できたのでよしとしました。
clash-hatさんのGPG公開鍵をインポートしてない場合は最初に鍵をインポート。
cd /etc/pki/rpm-gpg/
wget http://crash.fce.vutbr.cz/Petr.Kristof-GPG-KEY
rpm --import Petr.Kristof-GPG-KEY
これでrpmインストール時に警告が出なくなります。
