Actualización de ClamAV de Apple en 10.7 (Lion)
La receta de actualización a continuación requiere "Xcode" y "Xcode Command Line Tools" para construir el software desde su código fuente. Los comandos de Terminal.app que aparecen a continuación se han probado con Mac OS X 10.9.5, Xcode 6.2 en un shell zsh. Para conocer el motivo de las distintas elecciones, consulte la sección "Antecedentes" al final.
Construir pcre 8.39
$ cd ~
$ mkdir src
$ cd /tmp && curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz && cd -
$ cd src
$ tar zxf /tmp/pcre-8.39.tar.gz && rm /tmp/pcre-8.39.tar.gz
$ cd pcre-8.39
$ ./configure --prefix=/usr/local/pcre
$ make && make check
$ make install DESTDIR=/tmp/pcre
$ rm -r /tmp/pcre/usr/local/pcre/share #remove docs
$ tar czvf ~/pcre-8.39.tgz -C /tmp/pcre --exclude=.DS_Store usr/
Construir clamav para sobrescribir la versión incorporada de Mac OS X
$ cd ~/src
$ cd /tmp && curl -LO https://www.clamav.net/downloads/production/clamav-0.99.2.tar.gz && cd -
$ tar zxf /tmp/clamav-0.99.2.tar.gz && rm /tmp/clamav-0.99.2.tar.gz
$ cd clamav-0.99.2
Sin -mmacosx-version-min=10.X
ClamAV 0.99.2 se construirá con optimizaciones de código del compilador que sí se ejecutan en la versión OS X anfitriona (10.9), pero no funcionan en 10.6 y 10.7.
En caso de que no esté construyendo para correr en 10.6.8 o 10.7.5 podría necesitar cambiar 10.8.0
o 11.4.2
a la salida del comando uname -r
ejecutado en su Mac anfitrión (remoto).
10.6.8
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin10.8.0 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/
10.7.5
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin11.4.2 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/
Suba o copie los archivos .tgz a la máquina remota 10.7
SSH debe estar habilitado en el host remoto (receptor) para que estos comandos de ejemplo funcionen.
$ scp ~/pcre-8.39.tgz remote.host.tld:/tmp/
$ scp ~/clamav-0.99.2.tgz remote.host.tld:/tmp/
También puedes subir los archivos .tgz a un servidor web y descargarlos en la(s) máquina(s) anfitriona(s) remota(s), por ejemplo con este comando:
$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/pcre-8.39.tgz && cd -
$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/clamav-0.99.2.tgz && cd -
Instalar pcre 8.39 en el host remoto Mac en /usr/local/pcre
$ sudo tar zxvf /tmp/pcre-8.39.tgz -C /
Opcionalmente crear enlaces a los ejecutables de pcre en /usr/local/bin
$ cd /usr/local/bin && sudo ln -s ../pcre/usr/local/pcre/bin/{pcre-config,pcregrep,pcretest} . && cd -
Instalar ClamAV 0.99.2 en el host remoto Mac
$ sudo tar zxvf /tmp/clamav-0.99.2.tgz -C /
Actualizar la configuración de clamd sandbox (para 10.7)
$ sudo sed -i '' 's#(lib|share)#(lib|share|local/pcre/lib)#' /usr/share/sandbox/clamd.sb
$ grep -q -F '(regex #"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent$")' /usr/share/sandbox/clamd.sb || { awk '/\(regex #"\^\/private\/var\/clamav\/"\)/ {print "\t(regex #\"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent\$\")"}; {print}' /usr/share/sandbox/clamd.sb > ~/temp-clamd.sb; cat ~/temp-clamd.sb | sudo tee /usr/share/sandbox/clamd.sb > /dev/null; rm ~/temp-clamd.sb; };
Iniciar el demonio freshclam
$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.freshclam.plist
Ver si freshclam se está actualizando
$ tail -f /private/var/log/freshclam.log
Pulse Ctrl + C dejar de mostrar la "cola" del archivo de registro.
O compruebe la versión de la base de datos en el clamd
ejecutable:
$ clamd --version
ClamAV 0.99.2/22442/Thu Oct 27 20:03:54 2016
Iniciar el demonio clamd
$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.clamd.plist
Limpiar los archivos del instalador
$ rm /tmp/pcre-8.39.tgz
$ rm /tmp/clamav-0.99.2.tgz
Eso es todo.
Antecedentes
Sobrescribir el clamav de Apple
Debido a que la versión 0.97 de ClamaV de Mac OS X 10.7 está tan anticuada que rompe el sistema, creo que es prudente sobrescribir el ClamaV incorporado con una versión más reciente. Normalmente esto no se recomienda porque las actualizaciones de Apple sobrescribirían tal cambio. La última "Actualización de Software" para 10.7 que Apple lanzó se remonta a Septiembre de 2012 24 de septiembre de 2014. Por esa razón no espero que Apple lance ninguna actualización de software para Lion, nunca.
pcre
La versión actual (octubre de 2016) de ClamAV es la 0.99.2. Esa versión de clamav tiene una dependencia llamada " pcre " que no era necesario para ejecutar la actual versión 0.97 de clamav que falla. Por lo tanto, también es necesario instalar algún software nuevo. No estoy seguro de dónde es mejor instalar eso en la ubicación /usr o /usr/local. Para estar más seguro, elijo no cambiar el software del sistema en /usr, por lo que uso la carpeta /usr/local/pcre.
Máquinas construidas y liberadas por separado
Para el código abierto es bastante común construir e instalar el software desde el código fuente en la misma máquina. Debido a que el servidor que ejecuta clamav anticuado es un servidor de producción, no me meto con él. La compilación/construcción del software se hace en una caja Mac diferente.
Saludos
Con respecto a Comodín para ayudar a construir el Comando awk para insertar una nueva línea precedida de un carácter de tabulación en clamd.sb .
0 votos
La descripción del fallo enlazada recomienda actualizar el escáner. ¿Ya lo has intentado?
0 votos
@patrix " ¿Cómo actualizar el escáner clamav en el servidor Mac OS X Lion 10.7? "es otra forma de formular mi pregunta. No hay ninguna actualización disponible de Apple. Así que estoy buscando una receta para (hackear) actualizar el escáner ClamAV incorporado. Nota: Actualmente estoy atascado en el sandboxing, cómo editar clamd.sb desde un (bash) script.
0 votos
¿Se está actualizando a clamxav.com/download.html ¿una opción? ¿O compilar ClamaV desde el código fuente?
0 votos
@patrix Actualizar a clamxav no es una opción, porque eso no arregla el clamd incorporado. Activar accidentalmente el clamd incorporado o el freshclam hará que el sistema se bloquee (bucle de reinicio) de nuevo. Compilar desde el código fuente es una opción, aunque no en ese host, sólo en un mac separado. Mi máquina actual de xCode corre 10.9.5. Gracias por afinar mi pregunta.
0 votos
En mi opinión, de una forma u otra tendrás que actualizar (ya sea clamav o MacOS) y/o comilar algo tú mismo (y luego sustituir la versión incorporada). Descartar estas opciones pone límites bastante fuertes en el espacio de la solución aquí.
0 votos
@patrix Compilar algo por ti mismo/misma es una opción. Sin embargo no en el Mac que necesita un motor de clamav actualizado. Ese Mac es un servidor de producción y tiene que seguir siendo un servidor de producción y no una caja de construcción de software, es decir, una máquina de desarrollo o de pruebas.