轉載請註明出處,謝謝~畢竟忙了兩個禮拜。
ZimbraCollaborationSuite (ZCS) is a groupware email server andweb clientcreated by Zimbra, Inc.The company waspurchasedby Yahoo! in September 2007,and subsequentlyacquiredby VMware on January 12, 2010.
----------------------------------維基zimbra
請放心參考。爲了嚴謹,特地在另一臺全新電腦上安裝驗證過。
Ubuntu10.04(zimbra官方支持的Ubuntu最高版本)。從全新系統開始編譯Zimbra。
Ubuntu安裝配置
Ubuntu 10.04 32位
設置源,更新源
更新
源碼下載
exportP4PORT=codes.zimbra.com:2666
mkdir -p/home/public/p4
./p4 -u public -Ppublic1234 -c public-view sync -f //depot/zcs/HELIX-714/…
注意:確保創建的p4文件夾可寫可讀可執行。
實際下載的時候,經常無法連接到服務器,可以嘗試下載其它版本。
ZimbraSourcecode Mirror andbrowseable repository
編譯
Zimbra版本7.14。
參考 源碼根目錄下README.buildZCS,編譯前安裝配置好JDK與Ant,並設置好def文件。
The 1.6Java JDK must also be installed into /usr/local/java, so that the binary is:
/usr/local/java/bin/java
Ant mustbe installed in /usr/local/ant, so that the binary is:
/usr/local/ant/bin/ant
遇到編譯錯誤之前的錯誤按照提示做。
終端運行ZimbraBuild/buildZCS.sh開始編譯。
desktop版本 編譯參數-d
Checkingfor prerequisite binaries
Checking ant
Checking java
Checkingfor required JDK tarball
Error:jdk file needed for ZCS packaging not available
Necessaryversion is: 1.7.0_03
Pleasecreate/home/soliddream/Zimbra/main/ZimbraBuild/../ThirdPartyBuilds/i386/java/jdk1.7.0_03.tgz
Whichis an extracted then retarred version of JDK 1.6 downloaded from
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下載指定版本jdk,比如本例jdk 7u3,解壓縮再壓縮成jdk1.7.0_03.tgz。
一個一個解決之後不出意外的話會碰到編譯錯誤。
[javac]/home/public/p4/HELIX-714/ZimbraServer/src/java/com/zimbra/cs/util/tnef/mapi/TestTnefTimeZone.java:22:error:package org.junit does not exist
[javac] import org.junit.Assert;
[javac] ^
[javac]/home/public/p4/HELIX-714/ZimbraServer/src/java/com/zimbra/qa/unittest/TestAC.java:17:error:static import only from classes and interfaces
[javac] import staticorg.junit.Assert.fail;
[javac] ^
[javac]/home/public/p4/HELIX-714/ZimbraServer/src/java/com/zimbra/cs/util/tnef/mapi/TestTnefTimeZone.java:27:error:cannot find symbol
[javac] @Test
[javac] ^
[javac] symbol: class Test
[javac] location: class TestTnefTimeZone
將Junit4.jar放入..\ZimbraCommon\jars(Junit3.jar不支持)。另外所有需要的依賴庫都可以放這兒。
thirdparty 編譯參數-t
Checkingforprerequisite binaries
Checking autoconf
Error:autoconfnot found
類似錯誤,哪個沒有發現就安裝哪個。比如以上錯誤,需要你安裝autoconf。
接下來就是這類錯誤了,默認路徑usr/lib,根據實際安裝路徑在buildThirdParty.sh相應位置做些調整
Checkingforprerequisite libraries
Checking libncurses.so
Error:/usr/lib/libncurses.sonot found
安裝libncurses5-dev
Checkingforprerequisite libraries
Checking libncurses.so
Checking libz.so
Error:/usr/lib/libz.sonot found
安裝libz1g-dev
Checkingforprerequisite libraries
Checking libncurses.so
Checking libz.so
Checking libltdl.so
Checking libpcre.so
Error:/usr/lib/libpcre.sonot found
安裝libpcre3-dev
……
Error:Unableto write to /opt/zimbra
沒說的,確保/opt/zimbra文件夾存在,並且設置文件夾權限可讀可寫可執行
一路往下跑,並自動進入foss版編譯,最後提示編譯成功。
接下來編譯第三方軟件,日誌ThirdParty.make.log
***Building in openssl SUCCEEDED.
***Building in mysql SUCCEEDED.
***Building in bdb SUCCEEDED.
***Building in libxml2 SUCCEEDED.
***Building in heimdal SUCCEEDED.
***Building in curl SUCCEEDED.
***Building in cyrus-sasl SUCCEEDED.
***Building in libtool SUCCEEDED.
***Building in openldap FAILED.
***Building in aspell SUCCEEDED.
***Building in sendmail SUCCEEDED.
***Building in clamav FAILED.
***Building in apache-httpd SUCCEEDED.
***Building in php SUCCEEDED.
***Building in pcre SUCCEEDED.
***Building in expat SUCCEEDED.
***Building in popt SUCCEEDED.
***Building in postfix SUCCEEDED.
***Building in dspam SUCCEEDED.
***Building in rrdtool SUCCEEDED.
***Building in rsync SUCCEEDED.
***Building in snmp SUCCEEDED.
***Building in memcached SUCCEEDED.
***Building in nginx FAILED.
***Building in tcmalloc SUCCEEDED.
***Building in altermime SUCCEEDED.
/usr/bin/ld:cannot find -lperl
$ apt-getinstall libperl-dev
/usr/bin/ld:cannot find -lbz2
$ apt-getinstall libbz2-dev
/usr/bin/ld:cannot find -ldspam
$apt-getinstall libdspam7-dev
重新編譯,上述錯誤沒有了,nginx庫仍然編譯失敗,原因是存在以下兩個問題
- cc1: warnings being treated as errors。ThirdParty/nginx/nginx-0.9-zimbra/auto/cc/gcc註釋CFLAGS="$CFLAGS -Werror"
- src/http/modules/ngx_http_upstream_zmauth_module.c:2582多了個'}'
第三方軟件編譯成功,接下來開始編譯perl庫,日誌ThirdParty-Perllibs.log。
Loggingto ThirdParty-Perllibs.log
Compilingperl lib Crypt-SSLeay-0.58 ...done.
Compilingperl lib Crypt-OpenSSL-Random-0.04 ...done.
Compilingperl lib Crypt-OpenSSL-RSA-0.26 ...done.
Compilingperl lib Array-Compare-1.17 ...done.
Compilingperl lib Tree::DAG_Node ...FAILED.
Compilingperl lib Test::Simple ...FAILED.
Compilingperl lib Sub::Uplevel ...FAILED.
Compilingperl lib Test::Exception ...FAILED.
Compilingperl lib Test::Warn ...FAILED.
Compilingperl lib Net-SSLeay-1.36 ...done.
Compilingperl lib Net-Server-0.99 ...done.
Compilingperl lib XML-Parser-2.36 ...done.
Compilingperl lib IO ...FAILED.
Compilingperl lib Scalar::Util ...FAILED.
Compilingperl lib IO::Socket::SSL ...FAILED.
Compilingperl lib Socket6 ...FAILED.
Compilingperl lib ExtUtils::MakeMaker ...FAILED.
Compilingperl lib CPAN::Meta::YAML ...FAILED.
Compilingperl lib JSON::PP ...FAILED.
Compilingperl lib Parse::CPAN::Meta ...FAILED.
Compilingperl lib Version::Requirements ...FAILED.
Compilingperl lib ExtUtils::Manifest ...FAILED.
Compilingperl lib JSON::PP::Compat5006 ...FAILED.
Compilingperl libFile::Copy::Recursive...FAILED.
Compilingperl lib version ...FAILED.
Compilingperl lib CPAN::Meta ...FAILED.
Compilingperl lib ExtUtils::MakeMaker ...FAILED.
Compilingperl lib DBI ...FAILED.
Compilingperl lib Compress::Raw::Bzip2 ...FAILED.
Compilingperl lib Compress::Raw::Zlib ...FAILED.
Compilingperl lib IO::Compress::Base ...FAILED.
Compilingperl lib IO::Zlib ...FAILED.
Compilingperl lib Carp::Clan ...FAILED.
Compilingperl lib Storable ...FAILED.
Compilingperl lib Bit::Vector ...FAILED.
Compilingperl lib HTML::Tagset ...FAILED.
Compilingperl lib HTML::Parser ...FAILED.
Compilingperl lib URI ...FAILED.
Compilingperl lib Net::HTTP ...FAILED.
Compilingperl lib Net::SMTP ...FAILED.
Compilingperl lib Proc::ProcessTable ...FAILED.
Compilingperl lib HTTP::Parser ...FAILED.
Compilingperl lib Mozilla::CA ...FAILED.
Compilingperl lib LWP::MediaTypes ...FAILED.
Compilingperl lib Encode::Locale ...FAILED.
Compilingperl lib HTTP::Date ...FAILED.
Compilingperl lib HTTP::Message ...FAILED.
Compilingperl lib HTTP::Negotiate ...FAILED.
Compilingperl libFile::Listing ...FAILED.
Compilingperl lib HTTP::Daemon ...FAILED.
Compilingperl lib HTTP::Cookies ...FAILED.
Compilingperl lib WWW::RobotRules ...FAILED.
Compilingperl lib LWP::UserAgent ...FAILED.
Compilingperl lib LWP::Protocol::https ...FAILED.
Compilingperl lib IO::Stringy ...FAILED.
Compilingperl lib E/ER/ERYQ/MIME-Lite-2.117.tar.gz ...FAILED.
Compilingperl lib Locale::Maketext::Simple ...FAILED.
Compilingperl lib Params::Check ...FAILED.
Compilingperl lib Module::Load ...FAILED.
Compilingperl lib Module::CoreList ...FAILED.
Compilingperl lib Module::Load::Conditional ...FAILED.
Compilingperl lib IPC::Cmd ...FAILED.
Compilingperl lib ExtUtils::CBuilder ...FAILED.
Compilingperl lib S/SM/SMUELLER/ExtUtils-ParseXS-3.03_03.tar.gz ...FAILED.
Compilingperl lib Test::Harness ...FAILED.
Compilingperl lib D/DA/DAGOLDEN/Module-Build-0.3607.tar.gz ...FAILED.
Compilingperl lib Date::Parse ...FAILED.
Compilingperl lib Pod::Escapes ...FAILED.
Compilingperl lib Pod::Simple ...FAILED.
Compilingperl lib Test::Pod ...FAILED.
Compilingperl lib Mail::Mailer ...FAILED.
Compilingperl lib Convert::BinHex ...FAILED.
Compilingperl libFile::Temp ...FAILED.
Compilingperl lib D/DO/DONEILL/MIME-tools-5.427.tar.gz ...FAILED.
Compilingperl lib Task::Weaken ...FAILED.
Compilingperl lib Class::Inspector ...FAILED.
Compilingperl lib SOAP::Lite ...FAILED.
Compilingperl lib Net::Telnet ...FAILED.
Compilingperl lib Config::IniFiles ...FAILED.
Compilingperl lib Config::Properties ...FAILED.
Compilingperl lib Cache::FastMmap ...FAILED.
Compilingperl lib Device::SerialPort ...FAILED.
Compilingperl lib Date::Calc ...FAILED.
Compilingperl lib Devel::Symdump ...FAILED.
Compilingperl lib Pod::Coverage ...FAILED.
Compilingperl lib Test::Pod::Coverage ...FAILED.
Compilingperl lib S/SB/SBECK/Date-Manip-5.56.tar.gz ...FAILED.
Compilingperl lib Time::HiRes ...FAILED.
Compilingperl lib Convert::ASN1 ...FAILED.
Compilingperl lib Net::LDAP ...FAILED.
Compilingperl lib Unix::Syslog ...FAILED.
Compilingperl lib Parallel::ForkManager ...FAILED.
Compilingperl lib Package::Constants ...FAILED.
Compilingperl lib Archive::Tar ...FAILED.
Compilingperl lib Digest::SHA ...FAILED.
Compilingperl lib Digest::SHA1 ...FAILED.
Compilingperl lib Digest::HMAC ...FAILED.
Compilingperl lib Convert::TNEF ...FAILED.
Compilingperl lib Convert::UUlib ...FAILED.
Compilingperl lib Net::IP ...FAILED.
Compilingperl lib Net::DNS ...FAILED.
Compilingperl libFile::Tail ...FAILED.
Compilingperl libFile::Grep ...FAILED.
Compilingperl lib Data::UUID ...FAILED.
Compilingperl lib List::Compare ...FAILED.
Compilingperl lib Getopt::Easy ...FAILED.
Compilingperl lib Crypt::SaltedHash ...FAILED.
Compilingperl lib Archive::Zip ...FAILED.
Compilingperl lib Error ...FAILED.
Compilingperl lib Mail::DKIM ...FAILED.
Compilingperl lib K/KH/KHAMPTON/XML-SAX-Base-1.04.tar.gz ...FAILED.
Compilingperl lib XML::NamespaceSupport ...FAILED.
Compilingperl lib XML::SAX ...FAILED.
Compilingperl lib XML::SAX::Expat ...FAILED.
Compilingperl lib XML::Simple ...FAILED.
Compilingperl lib IO::Socket::INET6 ...FAILED.
Compilingperl lib NetAddr::IP ...FAILED.
Compilingperl lib Net::DNS::Resolver::Programmable ...FAILED.
Compilingperl lib Geography::Countries ...FAILED.
Compilingperl lib IP::Country ...FAILED.
Compilingperl lib DBD::SQLite ...FAILED.
Compilingperl lib Net-LDAPapi-3.0.3 ...done.
Compilingperl lib BerkeleyDB-0.41 ...done.
Compilingperl lib DB_File ...FAILED.
Compilingperl lib DBD::mysql ...FAILED.
Compilingperl lib Mail-SPF-v2.008 ...done.
Compilingperl lib Mail-SpamAssassin-3.3.2 ...done.
Compilingperl lib swatch-3.2.3 ...done.
Verifyingperl module build...
/home/lx/helix-714/ThirdParty/Perl/zmcheckbuiltmodules.pl>> ThirdParty-Perllibs.log 2>&1;
首先需要正確配置cpan
- perl Makefile文件 setup塊下刪除並備份其它地方,注意setup:不要刪除或者all塊去掉setup
- cpan配置,參考perl cpan 模塊安裝。o conf init urllist,選擇Asia->china->1,o conf commit寫進配置文件。exit退出。
原始鏡像http://zre-matrix.eng.vmware.com/cpan/
Verifyingperl module build...
/home/lixun/HELIX-714/ThirdParty/Perl/zmcheckbuiltmodules.pl>> ThirdParty-Perllibs.log 2>&1;
make:*** [check] Error 1
perl腳本zmcheckbuiltmodules.pl exit 1導致make錯誤。改成exit 0就好。
Perl庫編譯完之後,終於到了foss build了,日誌見FOSS-build.log
tar:/home/lx/helix-714/ZimbraBuild/../ThirdPartyBuilds/UBUNTU10/nginx/nginx-0.5.37-zimbra.tgz:無法open: 沒有那個文件或目錄
tar:錯誤不可恢復:現在退出
tar:Child returned status 2
tar:由於前次錯誤,將以上次的錯誤狀態退出
proxytargets.def註釋L82(cd $(PROXY_DEST_DIR); tar xzf $(NGINX_OLD_SOURCE).tgz;)或者編譯nginx舊版本
終於輸出
*** BUILD COMPLETED***
編譯成功了,最後生成的安裝文件 ZimbraBuild/i386/zcs-7.1.4_GA_2570.UBUNTU10.20120808195206.tgz。