2008年4月4日 星期五

ClamAV 0.92.1 ports@ FreeBSD 4.x

今天試著在 FreeBSD 4.11 上利用 ports 更新 ClamAV。目前的版本為 0.92.1,依據以往的經驗,多半會失敗。果不其然,卡在 make configure 的步驟上。奇怪的是,如果直接以 tar ball 或是切換到 works 中已經解開的 clamav 目錄中去下 configure 可以成功,再下 make 也能編譯成功。因此研究了 ClamAV ports 中的 Makefile。
舊版的 Makefile 中是:
# This port has a problem with -pthread,
# force to use -lthr until it's not fixed.
.if ${OSVERSION} >= 601000
PTHREAD_LIBS= -lthr
.endif
# Maybe the port is broken for
# FreeBSD 5.2.1 since -lc_r
# and -pthread have both issues there.
.if ${OSVERSION} == 502010
PTHREAD_LIBS= -pthread
.endif

而 0.92.1 中的 Makefile 是:
# This port has a problem with -pthread,
# force to use -lthr until it's not fixed.
.if ${OSVERSION} >= 601000
PTHREAD_LIBS= -lthr
.else
PTHREAD_LIBS= -lpthread
.endif

也就是,有關 PTHREAD_LIBS 的部份,舊版的針對 6.x 版和 5.x 版指定,4.x 版並不會去指定任何參數;而新版的則是 6.x 版指定為 -lthr,其它的通通指定為 -lpthread,這個 -lpthread 就是在 configure 時卡住的原因。
試著把 Makefile 中 PTHREAD_LIBS= -lpthread 那行加上井字號註解掉,果然就順利的編譯完成。不過,它似乎沒有判斷版本衝突的問題,因此,安裝前要記得先把舊版的 clamav 移除掉後再下 make install。
另外,由於 FreeBSD 4.x 上的 rc.subr 以 ports 裝完,路徑應該是 /usr/local/etc/rc.subr,所以 /usr/local/etc/rc.d/clamav* 也要記得將 /etc/rc.subr 改為 /usr/local/etc/rc.subr,不然,啟動時會發生錯誤。

沒有留言:

張貼留言

 
© 2009. Design by Pocket