在10.7(Lion)上更新Apple的ClamAV
下面的更新方法需要“ Xcode”和“ Xcode命令行工具”才能从其源代码构建软件。下面的Terminal.app命令已在zsh shell中与Mac OS X 10.9.5,Xcode 6.2进行了测试。有关为何做出多个选择的详细信息,请参阅底部的“背景”部分。
内部版本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/
编译clamav以覆盖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
如果没有-mmacosx-version-min=10.X
ClamAV 0.99.2,将使用在主机(10.9)OS X版本上运行的编译器代码优化进行构建,但不适用于10.6和10.7。
如果您不打算在10.6.8或10.7.5上运行,则可能需要更改(10.8.0
或更改11.4.2
为uname -r
)(远程)主机Mac上执行的命令的输出。
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/
将.tgz文件上传或复制到远程10.7计算机
应该在远程(接收)主机上启用SSH,这些示例命令才能运行。
$ scp ~/pcre-8.39.tgz remote.host.tld:/tmp/
$ scp ~/clamav-0.99.2.tgz remote.host.tld:/tmp/
您还可以将.tgz文件上传到Web服务器,然后将其下载到远程主机上,例如,使用以下命令:
$ 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 -
在/ usr / local / pcre的远程主机Mac上安装pcre 8.39
$ sudo tar zxvf /tmp/pcre-8.39.tgz -C /
(可选)在/ usr / local / bin中创建指向pcre可执行文件的链接
$ cd /usr/local/bin && sudo ln -s ../pcre/usr/local/pcre/bin/{pcre-config,pcregrep,pcretest} . && cd -
在远程主机Mac上安装ClamAV 0.99.2
$ sudo tar zxvf /tmp/clamav-0.99.2.tgz -C /
更新蛤sand沙箱配置(适用于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; };
启动freshclam守护程序
$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.freshclam.plist
查看是否Freshclam正在更新
$ tail -f /private/var/log/freshclam.log
按Ctrl+ C停止停止显示日志文件的“尾部”。
或在clamd
可执行文件中检查数据库版本:
$ clamd --version
ClamAV 0.99.2/22442/Thu Oct 27 20:03:54 2016
启动clamd守护程序
$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.clamd.plist
清理安装程序存档文件
$ rm /tmp/pcre-8.39.tgz
$ rm /tmp/clamav-0.99.2.tgz
而已。
背景
覆盖苹果的clavav
由于Mac OS X 10.7 ClamAV 0.97版已经过时以至于破坏了系统,我认为用较新的版本覆盖内置ClamAV是明智的。通常不建议这样做,因为Apple更新会覆盖此类更改。Apple上次发布的10.7的“软件更新”可追溯到2012年 9月,2014 年 9月24日。因此,我预计Apple永远不会发布Lion的任何软件更新。
PCRE
ClamAV的当前版本(2016年10月)为0.99.2。该clamav版本具有名为“ pcre ” 的依赖项,运行当前失败的clamav版本0.97不需要该依赖项。因此,也需要安装一些新需要的软件。我不确定将其安装在/ usr或/ usr / local位置上哪个更好。为了安全起见,我选择不更改/ usr中的系统软件,因此使用文件夹/ usr / local / pcre。
单独的构建和发布机器
对于开源,从源代码在同一台计算机上构建和安装软件是很常见的。因为运行过时的clamav的服务器是生产服务器,所以我不会弄混它。软件编译/构建是在其他Mac盒上完成的。
问候
关于Wildcard帮助构建awk命令,以将带有制表符的新行插入clamd.sb。