[sendmail-conf] Помогите с ClamAV-0.85.1 немогу приделать проверку rar3 :(

Victor Ustugov victor на corvax.kiev.ua
Пт Июн 10 12:17:02 EEST 2005


acesspost wrote:

>>>Статьи читал http://mcmcc.bat.ru/clam_rar3.html , там патчи 
>>>есть только 
>>>до версии 0.84, а у меня в портах на FreeBSD только 0.85.1
>>
>>смотрю внутрь clamav-0.84-2.fc3.src.rpm и 
>>clamav-0.85.1-2.src.rpm сборки 
>>от McMCC - патчи clamav-0.84-libunrar3.patch там не отличаются
> 
> Почему тогда не получается?
> 
> Делаю так:
> FreeBSD 4.11, все порты последние
> Качаю патчи для clamav и unrar
> http://mcmcc.bat.ru/clamav/unrar-3.4.3_fix.patch
> http://mcmcc.bat.ru/clamav/clamav-0.84-libunrar3.patch
> 
>         cd /usr/ports/archivers/unrar
>         make fetch
>         make extract
>         cd /usr/ports/archivers/unrar/work/unrar
>         patch<unrar-3.4.3_fix.patch
>         gmake -f makefile.unix lib
> 
>         cp /usr/ports/archivers/unrar/work/unrar/libunrar3.so /usr/local/lib
>         cp /usr/ports/archivers/unrar/work/unrar/dll.hpp /usr/local/include
>         cp /usr/ports/archivers/unrar/work/unrar/dll.hpp
> /usr/local/include/libunrar3
>         cp /usr/ports/archivers/unrar/work/unrar/libunrar3.so /usr/lib
>         cp /usr/ports/archivers/unrar/work/unrar/dll.hpp /usr/include
>         cp /usr/ports/archivers/unrar/work/unrar/dll.hpp
> /usr/include/libunrar3
> 
>         cd /usr/ports/archivers/unrar
>         make clean

сборку либы анраровой я обсуждать пожалуй не буду, но вот это все вверху 
- это порнография полная...

хочешь сделать не так криво - собери отдельный порт

у меня сохранился скрипт для сборки своего порта, вроде там особых 
изменений не надо будет делать:

#!/bin/sh

DIST_FILE=unrar-3.4.3_fix.patch
DIST_FILE_FULL=/usr/ports/distfiles/${DIST_FILE}
PORT_DIR=/usr/ports/archivers/libunrar3
SRC_PORT_DIR=/usr/ports/archivers/unrar

rm -rf ${PORT_DIR}
rsync -avz ${SRC_PORT_DIR}/ ${PORT_DIR}/

if [ ! -f ${DIST_FILE_FULL} ]; then
         wget http://mcmcc.bat.ru/clamav/${DIST_FILE} -O${DIST_FILE_FULL}
fi

cd ${PORT_DIR}

echo "PATCHFILES=${DIST_FILE}" > ${PORT_DIR}/Makefile.local
echo "PATCH_DIST_STRIP=-p1" >> ${PORT_DIR}/Makefile.local

perl -pi -e 's/(\@\$\{SED\} -e)/$1 "s\|all:\tunrar\|all:\tlib\|" -e/' 
${PORT_DIR}/Makefile
perl -pi -e 's/^(PORTNAME=\s*)\S+$/${1}libunrar3/' ${PORT_DIR}/Makefile
perl -pi -e 's/^.*INSTALL_PROGRAM.+\/unrar.*$/\t\@\$\{MKDIR\} 
\$\{PREFIX\}\/include\/libunrar3
\t\$\{INSTALL_DATA\} \$\{WRKSRC\}\/dll.hpp \$\{PREFIX\}\/include\/libunrar3
\t\$\{INSTALL_DATA\} \$\{WRKSRC\}\/libunrar3.so \$\{PREFIX}\/lib
/' ${PORT_DIR}/Makefile

make makesum
make patch
make build NOPORTDOCS=yo

make deinstall install



там много строк перенеслось, но я думаю, что разобраться можно

>         cd /usr/ports/security/clamav
>         make fetch
>         make extract

make extract сам выполнит fetch при необходимости

кстати, я не вижу выполненного make patch

>         cd /usr/ports/security/clamav/work/clamav-0.85.1/libclamav
>         patch<clamav-0.84-libunrar3.patch

кузявее выполнять
cd /usr/ports/security/clamav/work/clamav-0.85.1
patch -p1 < clamav-0.84-libunrar3.patch

>         cd /usr/ports/security/clamav/work/clamav-0.85.1
>         /usr/local/bin/aclocal19
>         /usr/local/bin/autoconf259
>         /usr/local/bin/automake19
> После automake19 получаю:
> libclamav/Makefile.am:20: `CFLAGS' is a user variable, you should not
> override it;
> libclamav/Makefile.am:20: use `AM_CFLAGS' instead.
> libclamav/Makefile.am:21: `LDFLAGS' is a user variable, you should not
> override it;
> libclamav/Makefile.am:21: use `AM_LDFLAGS' instead.
> Пробовал исправлять в Makefile.am как просят, ошибки не выдает, но далее все
> так же.
> 
>         cd /usr/ports/security/clamav
>         make install

не нужно делать make install при таких экспериментах. лучше make build

> После make install:
> ===>  Patching for clamav-0.85.1
> ===>  Applying FreeBSD patches for clamav-0.85.1
> 1 out of 1 hunks failed--saving rejects to libclamav/unrarlib.h.rej
> => Patch patch-libclamav_unrarlib.h failed to apply cleanly.
> => Patch(es) patch-Makefile.in patch-configure patch-etc::Makefile.in
> patch-libclamav::zziplib::zzip-conf.h patch-libclamav_clamav.h
> patch-libclamav_mspack_mspack.h applied cleanly.
> *** Error code 1
> 
> Stop in /usr/ports/security/clamav.
> 
> Где грабли зарыты???

патч от McMCC конфликтует с одним из патчей порта (c 
patch-libclamav_unrarlib.h). т. е. если не накладывать патчи порта, то 
патч от McMCC накладывается нормально, но потом не накладываются патчи 
портовые. и наоборот.

btw: судя по всему, поддержку rar3 включат в релиз.

если же хочется самому и сейчас, то надо просто удалить 
patch-libclamav_unrarlib.h из каталога с патчами порта

или просто запустить вот такой скрипт:

#!/bin/sh

DIST_FILE=clamav-0.84-libunrar3.patch
DIST_FILE_FULL=/usr/ports/distfiles/${DIST_FILE}
PORTS_DIR=/usr/ports
PORT_SUBDIR=security/clamav-libunrar3
PORT_DIR=${PORTS_DIR}/${PORT_SUBDIR}
SRC_PORT_SUBDIR=security/clamav
SRC_PORT_DIR=${PORTS_DIR}/${SRC_PORT_SUBDIR}

rm -rf ${PORT_DIR}
rsync -avz ${SRC_PORT_DIR}/ ${PORT_DIR}/

if [ ! -f ${DIST_FILE_FULL} ]; then
         wget http://mcmcc.bat.ru/clamav/${DIST_FILE} -O${DIST_FILE_FULL}
fi

cp patch-libclamav::stdlib.patch ${PORT_DIR}/files/

cd ${PORT_DIR}

echo "PATCHFILES=${DIST_FILE}" > ${PORT_DIR}/Makefile.local
echo "PATCH_DIST_STRIP=-p1" >> ${PORT_DIR}/Makefile.local
echo "CPPFLAGS+= -I\${LOCALBASE}/include/libunrar3" >> 
${PORT_DIR}/Makefile.local
echo "LDFLAGS+= -lunrar3" >> ${PORT_DIR}/Makefile.local

make clean
make makesum
rm ${PORT_DIR}/files/patch-libclamav_unrarlib.h
make patch

cd work/clamav-0.8*
aclocal
RETVAL=$?
if ! test $RETVAL = 0 ; then
     aclocal19
     RETVAL=$?
fi
if test $RETVAL = 0 ; then
         autoconf
         RETVAL=$?
         if ! test $RETVAL = 0 ; then
             autoconf259
             RETVAL=$?
         fi
         if test $RETVAL = 0 ; then
                 automake
                 RETVAL=$?
                 if ! test $RETVAL = 0 ; then
                     automake19
                     RETVAL=$?
                 fi
                 if ! test $RETVAL = 0 ; then
                         echo "Error while executing automake"
                 fi
         else
                 echo "Error while executing autoconf"
         fi
else
         echo "Error while executing aclocal"
fi
cd ../..

if test $RETVAL = 0 ; then
         make build
fi


p. s. я не помню, как я настраивал mailman для листа (т. е. проходят ли 
аттачи), так что на всякий случай оба скрипта сейчас еще приаттачю к 
письму...

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ: 77186900, 32418694      CRV2-RIPE, CRV-UANIC
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: patch_unrar.sh
Type: text/x-sh
Size: 972 bytes
Desc: отсутствует
URL: <http://mta.org.ua/pipermail/sendmail-conf/attachments/20050610/d4f59d91/attachment.bin>
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: patch_clamav.sh
Type: text/x-sh
Size: 1469 bytes
Desc: отсутствует
URL: <http://mta.org.ua/pipermail/sendmail-conf/attachments/20050610/d4f59d91/attachment-0001.bin>


Подробная информация о списке рассылки sendmail-conf