Ошибка обновления ClamAV
На многих моих серверах под управлением FreeBSD (версий 10.0 и 8.4, обеих архитектур amd64 и i386) совместно с Postfix работает антивирус ClamAV. Недавно, 17 мая, состоялся релиз последней на сегодняшний момент версии антивируса – 0.98.3. В портах FreeBSD он появился 19 мая. Но обновиться до этой последней версии ClamAV отказался. Задача завершалась с ошибкой на всех без исключения серверах. |
Версия антивируса на момент попытки обновления:
# pkg info | grep clamav clamav-0.98.1_1 Command line virus scanner written entirely in C
Ошибка, с которой обрывалась сборка порта ClamAV (пример с сервера FreeBSD 10.0, amd64):
In file included from freshclam.c:57: In file included from ../libclamav/others.h:21: In file included from ../libclamav/matcher.h:28: ../libclamav/others.h:154:5: error: unknown type name ‘stats_section_t’ stats_section_t *sections; ^ ../libclamav/others.h:323:5: error: unknown type name ‘clcb_stats_add_sample’ clcb_stats_add_sample cb_stats_add_sample; ^ ../libclamav/others.h:324:5: error: unknown type name ‘clcb_stats_remove_sample’ clcb_stats_remove_sample cb_stats_remove_sample; ^ ../libclamav/others.h:325:5: error: unknown type name ‘clcb_stats_decrement_count’ clcb_stats_decrement_count cb_stats_decrement_count; ^ ../libclamav/others.h:326:5: error: unknown type name ‘clcb_stats_submit’ clcb_stats_submit cb_stats_submit; ^ ../libclamav/others.h:327:5: error: unknown type name ‘clcb_stats_flush’ clcb_stats_flush cb_stats_flush; ^ ../libclamav/others.h:328:5: error: unknown type name ‘clcb_stats_get_num’ clcb_stats_get_num cb_stats_get_num; ^ ../libclamav/others.h:329:5: error: unknown type name ‘clcb_stats_get_size’ clcb_stats_get_size cb_stats_get_size; ^ ../libclamav/others.h:330:5: error: unknown type name ‘clcb_stats_get_hostid’ clcb_stats_get_hostid cb_stats_get_hostid; ^ ../libclamav/others.h:380:5: error: unknown type name ‘clcb_stats_add_sample’ clcb_stats_add_sample cb_stats_add_sample; ^ ../libclamav/others.h:381:5: error: unknown type name ‘clcb_stats_remove_sample’ clcb_stats_remove_sample cb_stats_remove_sample; ^ ../libclamav/others.h:382:5: error: unknown type name ‘clcb_stats_decrement_count’ clcb_stats_decrement_count cb_stats_decrement_count; ^ ../libclamav/others.h:383:5: error: unknown type name ‘clcb_stats_submit’ clcb_stats_submit cb_stats_submit; ^ ../libclamav/others.h:384:5: error: unknown type name ‘clcb_stats_flush’ clcb_stats_flush cb_stats_flush; ^ ../libclamav/others.h:385:5: error: unknown type name ‘clcb_stats_get_num’ clcb_stats_get_num cb_stats_get_num; ^ ../libclamav/others.h:386:5: error: unknown type name ‘clcb_stats_get_size’ clcb_stats_get_size cb_stats_get_size; ^ ../libclamav/others.h:387:5: error: unknown type name ‘clcb_stats_get_hostid’ clcb_stats_get_hostid cb_stats_get_hostid; ^ freshclam.c:762:5: warning: implicit declaration of function ‘cl_engine_stats_enable’ is invalid in C99 [-Wimplicit-function-declaration] cl_engine_stats_enable(engine); ^ freshclam.c:781:9: warning: implicit declaration of function ‘cl_engine_set_clcb_stats_get_hostid’ is invalid in C99 [-Wimplicit-function-declaration] cl_engine_set_clcb_stats_get_hostid(engine, NULL); ^ freshclam.c:786:35: error: use of undeclared identifier ‘CL_ENGINE_STATS_TIMEOUT’; did you mean ‘CL_ENGINE_BYTECODE_TIMEOUT’? cl_engine_set_num(engine, CL_ENGINE_STATS_TIMEOUT, optget(opts, “StatsTimeout”)->numarg); ^~~~~~~~~~~~~~~~~~~~~~~ CL_ENGINE_BYTECODE_TIMEOUT /usr/local/include/clamav.h:192:5: note: ‘CL_ENGINE_BYTECODE_TIMEOUT’ declared here CL_ENGINE_BYTECODE_TIMEOUT, /* uint32_t */ ^ 2 warnings and 18 errors generated. gmake4: *** [freshclam.o] Ошибка 1 gmake4: Выход из каталога `/usr/ports/security/clamav/work/clamav-0.98.3/freshclam’ gmake3: *** [all-recursive] Ошибка 1 gmake3: Выход из каталога `/usr/ports/security/clamav/work/clamav-0.98.3’ gmake2: *** [all] Ошибка 2 gmake2: Выход из каталога `/usr/ports/security/clamav/work/clamav-0.98.3’ *** Error code 1 Stop. make1: stopped in /usr/ports/security/clamav *** Error code 1 Stop. make: stopped in /usr/ports/security/clamav
Как оказалось – не я один был озадачен таким поведение порта при обновлении. Решение было очень банальным. Необходимо перед обновлением порта выполнить его деинсталляцию, а затем заново у становить его. То есть:
а) если порт security/clamav не был до этого момента установлен в системе, то его простая установка:
make install
– произойдет без сбоя;
б) если порт security/clamav уже стоял в системе, то его обновление (установка):
make install
– вызовет обозначенную выше ошибку.
Для того, чтобы порт встал в систему, необходимо просто перед обновлением его удалить:
make deinstall clean
, а затем make reinstall clean
или же
make deinstall clean
, а затем make install clean
.
Делаем:
# cd /usr/ports/security/clamav # make clean => Cleaning for clamav-0.98.3_5 # make deinstall clean => Deinstalling for security/clamav ===> Deinstalling Deinstallation has been requested for the following 1 packages: clamav-0.98.1_1 The deinstallation will free 14 MB [1/1] Deleting clamav-0.98.1_1… ================================================ If you want remove clamav permanently from you system execute following commands: # rm -rf /var/log/clamav # rm -rf /var/run/clamav # rm -rf /var/db/clamav # pw userdel clamav ================================================ done
Выполнять удаление конфигурационных файлов, базы данных и существующего пользователя и группу clamav нет необходимости.
А теперь производим повторную установку, которая заканчивается успехом:
# make install clean … > Compressing man pages (compress-man) => Staging rc.d startup script(s) => Installing for clamav-0.98.3_5 => Registering installation for clamav-0.98.3_5 => Creating users and/or groups. Using existing group ‘clamav’. Using existing group ‘mail’. Using existing user ‘clamav’. Installing clamav-0.98.3_5… done ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/sbin/clamd This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/clamav-freshclam /usr/local/etc/rc.d/clamav-clamd If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type ‘make deinstall’ to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.clamav.net/ ===> Cleaning for clamav-0.98.3_5
В логах работы антивируса, после выполнения команды freshclam
исчезнут напоминания о том, что ваша версия clamav устарла и необходимо ее обновить:
# freshclam ClamAV update process started at Mon Jun 9 10:09:21 2014 main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) daily.cld is up to date (version: 19075, sigs: 982662, f-level: 63, builder: neo) bytecode.cld is up to date (version: 241, sigs: 46, f-level: 63, builder: dgoddard) # less /var/log/clamav/freshclam.log Mon Jun 9 10:05:54 2014 -> Received signal: wake up Mon Jun 9 10:05:54 2014 -> ClamAV update process started at Mon Jun 9 10:05:54 2014 Mon Jun 9 10:05:54 2014 -> WARNING: Your ClamAV installation is OUTDATED! Mon Jun 9 10:05:54 2014 -> WARNING: Local version: 0.98.1 Recommended version: 0.98.3 Mon Jun 9 10:05:54 2014 -> DON'T PANIC! Read http://www.clamav.net/support/faq Mon Jun 9 10:05:54 2014 -> main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) Mon Jun 9 10:05:54 2014 -> daily.cld is up to date (version: 19075, sigs: 982662, f-level: 63, builder: neo) Mon Jun 9 10:05:54 2014 -> bytecode.cld is up to date (version: 241, sigs: 46, f-level: 63, builder: dgoddard) Mon Jun 9 10:06:03 2014 -> -------------------------------------- Mon Jun 9 10:09:21 2014 -> -------------------------------------- Mon Jun 9 10:09:21 2014 -> ClamAV update process started at Mon Jun 9 10:09:21 2014 Mon Jun 9 10:09:21 2014 -> main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo) Mon Jun 9 10:09:21 2014 -> daily.cld is up to date (version: 19075, sigs: 982662, f-level: 63, builder: neo) Mon Jun 9 10:09:21 2014 -> bytecode.cld is up to date (version: 241, sigs: 46, f-level: 63, builder: dgoddard)
_______________
Первоначальное решение проблемы нашел здесь.