编译Zimbra

来源:互联网 发布:中兴算法部 编辑:程序博客网 时间:2024/06/06 02:48

转载请注明出处,谢谢~毕竟忙了两个礼拜。

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。