編譯Zimbra

轉載請註明出處,謝謝~畢竟忙了兩個禮拜。

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

設置源,更新源

更新

 

源碼下載

BuildingZimbra using Perforce

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

zcs 6.0.7源碼 下載

 

編譯


Zimbra版本7.14。

參考 源碼根目錄下README.buildZCS,編譯前安裝配置好JDKAnt,並設置好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庫仍然編譯失敗,原因是存在以下兩個問題

  1. cc1: warnings being treated as errorsThirdParty/nginx/nginx-0.9-zimbra/auto/cc/gcc註釋CFLAGS="$CFLAGS -Werror"
  1. 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->1o 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。

發佈了65 篇原創文章 · 獲贊 32 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章