本文共 10660 字,大约阅读时间需要 35 分钟。
转载请注明出处,谢谢~毕竟忙了两个礼拜。
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文件夹可写可读可执行。
实际下载的时候,经常无法连接到服务器,可以尝试下载其它版本。
编译
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
下载指定版本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库仍然编译失败,原因是存在以下两个问题
第三方软件编译成功,接下来开始编译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
原始镜像
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。