Project

General

Profile

Support #427

Updated by Daniel Curtis over 10 years ago

This guide is building the Zimbra Collaborative Suite 8.0.8 Open Source Edition on an Ubuntu 14.04 x64 virtual machine with 1GB of RAM.  

 h2.    Initial Setup 

 * Install git: 
 <pre> 
 apt-get install git 
 </pre> 

 * Obtain the git ssh access keys: 
 <pre> 
 mkdir -p /tmp/zimbra-git 
 cd /tmp/zimbra-git 
 wget http://files2.zimbra.com/downloads/git-fusion/zimbra-git-ssh.tgz 
 tar xfz zimbra-git-ssh.tgz 
 </pre> 

 * Add the access keys to your own user account:  
 <pre> 
 cd ~/.ssh 
 cp /tmp/zimbra-git/id_rsa_git* . 
 </pre> 

 * Add the following @~/.ssh/config@. Create the file if it doesn't exist:  
 <pre> 
 Host zimbra-git 
   User public 
   Hostname git.zimbra.com 
   IdentityFile ~/.ssh/id_rsa_git 
   IdentitiesOnly yes 
   Port 1067 
 </pre> 

 * Ensure the permissions on the config file are correct  
 <pre> 
 chmod 600 ~/.ssh/config 
 </pre> 

 h2. Obtaining the source to Zimbra Collaboration Suite 

 The source code for ZCS is retrieved from git.zimbra.com as described above. 

 * To obtain the source: 
 <pre> 
 mkdir -p ~/git 
 cd ~/git 
 git clone git@zimbra-git:zimbra-foss 
 </pre> 
 
 h3. Source for the "main" branch 

 * main is the development branch.  

 The 'main' branch, (often referred to as mainline) contains the latest code - if your interested in seeing pre-release software check it out. 

 It is constantly in flux (for instance we might stagger spec files to avoid the need to always rebuild ThirdParty), if you're hitting a error in the Zimbra build side the first thing to do is re-sync, as we typically resolve these fast. 

 +It is the default branch in use after doing a checkout of zimbra-foss+ 

 h3. Listing available branches 

 * The zimbra-foss repo contains all the available release branches. You can obtain a list of the branches via: 
 <pre> 
 git branch -a 
 </pre> 
 > *! main-foss 
 > remotes/origin/HEAD -> origin/main-foss 
 > remotes/origin/frank-foss 
 > remotes/origin/franklin-5010-foss 
 > remotes/origin/franklin-5011-foss 
 > remotes/origin/franklin-5012-foss 
 > remotes/origin/franklin-5013-foss 
 > remotes/origin/franklin-5014-foss 
 > remotes/origin/franklin-5015-foss 
 > remotes/origin/franklin-5016-foss 
 > remotes/origin/franklin-5017-foss 
 > remotes/origin/franklin-5018-foss 
 > remotes/origin/franklin-5019-foss 
 > remotes/origin/franklin-5020-foss 
 

 The branch with a * in front of it is your active checkout. 

 h3. Changing the active checkout 

 To change the active branch, you use the git checkout command, and supply the release you are interested in. 

 * For example, to switch to the IRONMAIDEN 8 release branch, one would execute: 
 <pre> 
 cd ~/git/zimbra-foss 
 git checkout ironmaiden-foss 
 </pre> 
 
 h3. Updating an existing clone 

 * To update an already existing clone: 
 <pre> 
 cd ~/git/zimbra-foss 
 git pull 
 </pre> 

 h2. Building Zimbra Collaboration Server 

 To build Zimbra Collaboration Server, the "buildZCSH.sh" script can be used, that is located in the ZimbraBuild directory after the checkout completes. 

 * The first time you go to build, it is recommended to execute: 
 <pre> 
 cd ~/git/zimbra-foss/ZimbraBuild 
 ./buildZCS.sh -t -u 
 </pre> 
 This will help you through adding Ant & JDK, check dependencies, build ThridParty using a public CPAN mirror for Perl, then start the ZCS build process. It requires sudo access to install the various required binaries and libraries for build (The -u option). 

 If the server already has the various required binaries and libraries installed, then: 
 <pre> 
 cd ~/git/zimbra-foss/ZimbraBuild 
 ./buildZCS.sh -t 
 </pre> 

 h2. Install JDK 7 

 * Install some prerequisites: 
 <pre> 
 sudo apt-get install build-essential autoconf libtool gettext automake cmake flex bison software-properties-common python-software-properties unzip 
 </pre> 

 * Install the Java Development Kit 7: 
 <pre> 
 sudo apt-get install openjdk-7jdk 
 </pre> 

 * Download JDK 7u60 locally then upload the local copy to the Zimbra server: 
 <pre> 
 scp -P 4440 ~/Downloads/jdk-7u60-linux-x64.tar.gz user@zimbra.example.com:/home/user/ 
 </pre> 

 * Next, on the Zimbra server, add JDK 7u60 to the Zimbra build path: 
 <pre> 
 cp ~/jdk-7u60-linux-x64.tar.gz ~/git/zimbra-foss/ThirdPartyBuilds/x86_64/java/jdk-1.7.0_60.tgz 
 </pre> 

 * Now, download JCE 6 locally, then upload the local copy to the Zimbra server: 
 <pre> 
 scp -P 4440 ~/Downloads/jce_policy-6.zip user@zimbra.example.com:/home/user/ 
 </pre> 

 * Add JCE 6 policy to the JDK 7u60 build path: 
 <pre> 
 cp jce_policy-6.zip ~/git/zimbra-foss/ThirdPartyBuilds/x86_64/java/ 
 cd ~/git/zimbra-foss/ThirdPartyBuilds/x86_64/java/ 
 unzip jce_policy-6.zip 
 </pre> 

 h2. Install Apache Ant 

 * Install apache ant: 
 <pre> 
 sudo apt-get install ant 
 </pre> 

 h3. Fix a few linked object problems: 

 * I needed to create a symbolic link since Zimbra is looking for @/usr/lib/libncurses.so@: 
 <pre> 
 sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.5 /usr/lib/libncurses.so 
 </pre> 

 * I needed to create a symbolic link since Zimbra is looking for @/usr/lib/libz.so@: 
 <pre> 
 sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/libz.so 
 </pre> 

 * I needed to create a symbolic link since Zimbra is looking for @/usr/lib/libltdl.so@: 
 <pre> 
 sudo ln -s /usr/lib/x86_64-linux-gnu/libltdl.so /usr/lib/libltdl.so 
 </pre> 

 * I needed to create a symbolic link since Zimbra is looking for @/usr/lib/libpcre.so@: 
 <pre> 
 sudo ln -s /lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/libpcre.so 
 </pre> 


 h2. Resources 

 * http://wiki.zimbra.com/wiki/Building_Zimbra_using_Git 
 * http://www.oracle.com/technetwork/java/javase/archive-139210.html Download and add JRE 7u60: 

 

Back