今天在FreeBSD 5.4 Release中安装Firefox, 先更新ports tree到最新版本:
FreeBSD# cvsup -g -L 2 /root/ports-supfile
然后到Firefox的目录中去执行make:
FreeBSD# cd /usr/ports/www/firefox
FreeBSD# make
没多久,系统就爆出了编译错误:
nsHostResolver.h:95: error: ISO C++ forbids declaration of `PRAddrInfo' with no type
nsHostResolver.h:95: error: expected `;' before '*' token
nsHostResolver.h: In member function `PRBool nsHostRecord::HasResult() const':
nsHostResolver.h:99: error: `addr_info' undeclared (first use this function)
nsHostResolver.h:99: error: (Each undeclared identifier is reported only once for each function it appears in.)
nsHostResolver.h: At global scope:
nsHostResolver.h:209: error: `PRAddrInfo' has not been declared
nsHostResolver.h:209: error: ISO C++ forbids declaration of `parameter' with no type
nsDNSService2.cpp: In member function `virtual nsresult nsDNSRecord::GetCanonicalName(nsACString&)':
nsDNSService2.cpp:95: error: 'class nsDerivedSafe' has no member named 'addr_info'
nsDNSService2.cpp:96: error: 'class nsDerivedSafe' has no member named 'addr_info'
nsDNSService2.cpp:96: error: `PR_GetCanonNameFromAddrInfo' undeclared (first use this function)
nsDNSService2.cpp: In member function `virtual nsresult nsDNSRecord::GetNextAddr(PRUint16, PRNetAddr*)':
nsDNSService2.cpp:112: error: 'class nsDerivedSafe' has no member named 'addr_info'
nsDNSService2.cpp:113: error: 'class nsDerivedSafe' has no member named 'addr_info'
nsDNSService2.cpp:113: error: `PR_EnumerateAddrInfo' undeclared (first use this function)
nsDNSService2.cpp: In member function `PRUint16 nsDNSService::GetAFForLookup(const nsACString&)':
nsDNSService2.cpp:528: error: `PR_AF_UNSPEC' undeclared (first use this function)
gmake[4]: *** [nsDNSService2.o] Error 1
gmake[4]: Leaving directory `/usr/ports/www/firefox/work/mozilla/netwerk/dns/src'
gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory `/usr/ports/www/firefox/work/mozilla/netwerk/dns'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/usr/ports/www/firefox/work/mozilla/netwerk'
gmake[1]: *** [tier_9] Error 2
gmake[1]: Leaving directory `/usr/ports/www/firefox/work/mozilla'
gmake: *** [default] Error 2
*** Error code 2
引起这个问题的原因是Firefox在老版本的nspr上会存在问题,无法通过编译!
于是决定安装新版的依赖包:
FreeBSD# cd /usr/ports
FreeBSD# make search name=nspr
查出来有如下几个:
Port:
nspr-4.4.1_1
Path:
/usr/ports/devel/nspr
Port:
dnsproxy-1.13
Path:
/usr/ports/dns/dnsproxy
Port:
transproxy-1.5
Path:
/usr/ports/www/transproxy
对他们一一进行make, make install后,再来安装firefox即可!