Compilar Zimbra OSE Ironmaiden (8.0.7)

Compilación de Zimbra OSE Ironmaiden

Aunque estas instrucciones están dirigidas la versión 8.0.7 de Zimbra en realidad se acerca más a compilar Zimbra OSE Ironmaiden, esto es las versiones 8.0.x porque no estamos usando la rama de 8.0.7 (hasta que no haya release de 8.0.7 esa rama no existirá).
Este documento se ha basado en el documento: Compilar Zimbra OSE 8.0.6.

Requisitos previos generales

Para este proceso necesitáis una máquina virtual de Ubuntu 12.04 minimal limpia o por lo menos eso es recomiendo porque si usáis un Zimbra de producción todo el /opt/zimbra se borrará y normalmente no es lo que uno quiere. Unas 50 GB de espacio nos sobrarán para este proceso.
Por otro lado presupongo que se tiene una instalación de Zimbra 8.0.6 (Sí, Zimbra 8.0.6 porque aún no hay release de 8.0.7) lista para usar para evitarnos, entre otras, unas descargas desde upstream. En teoría no haría falta esta instalación binaria, con descargar el tgz y descomprimir los debs podríamos conseguir estos ficheros pero, claro, llevaría mucho tiempo explicarlo, así que haremos esa suposición.

Sobre la dificultad de la compilación en la práctica

Cómo podréis comprobar las instrucciones oficiales de que el comando de compilación con fuentes te guiará para resolver todas las dependencias no es del todo cierto. Tienes que averiguar muchas cosas a mano para poder arreglarlas y que por fin compile. Y más en el caso de 8.0.7.

Documento

Aquí os dejo el documento adaptado desde Latex para wordpress de una forma un tanto manual así que si encontráis algún gazapo comentadlo. Si os animáis a replicar el procedimiento y lo conseguís también nos alegraremos que dejéis un comentario de vuestra experiencia por aquí.

Introducción

Veremos cómo compilar Zimbra OSE, especificamente la versión 8.0.7.

Requisitos SO

Usaremos: Ubuntu 12.04 64 bit minimal.

Requisito usuario

Poder ejecutar cualquier comando con sudo sin pedir password.

Requisitos software

git

apt-get install git

ant

Instalamos el paquete ant.

 apt-get install ant

Paquetes varios

También instalaremos:

apt-get install autoconf libtool bison \
 flex g++ patch unzip libncurses5-dev \
 zlibc zlib1g-dev libpcre3-dev \
 libexpat1-dev libpopt-dev libperl-dev \
 make cmake libltdl-dev libwww-perl \
 libbz2-dev libcloog-ppl-dev

Paquetes extra para 8.0.7

apt-get install libaio-dev \
libbsd-dev

Preparación Git

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
 mkdir -p ~/.ssh/zimbra-git
 cd ~/.ssh/zimbra-git
 cp /tmp/zimbra-git/id_rsa_git* .

Creamos el fichero:

 ~/.ssh/config

para añadir:

 Host zimbra-git
 User public
 Hostname git.zimbra.com
 IdentityFile ~/.ssh/zimbra-git/id_rsa_git
 IdentitiesOnly yes
 Port 1067

Usuario y grupo zimbra

useradd zimbra

 

Descarga código fuente

Descargaremos el codigo fuente para la versión 8.0.7 en desarrollo. Para
el 8.0.7 denitivo cuando hagan una release sería el: ironmaiden-807-foss.

cd ~
git clone git@zimbra-git:ironmaiden-foss

Si es la primera vez habrá que aceptar conectarse al repositorio de Zimbra.

Completado código fuente

JDK de Java

Creamos el directorio:

mkdir -p ~\
/ironmaiden-foss\
/ThirdPartyBuilds/x86_64/java

Conseguiremos el jdk de la instalación de java correspondiente (Descargas
de Oracle).
Tendremos que hacer el siguiente truco:

tar xzf jdk-7u51-linux-x64.tar.gz
mv jdk1.7.0_51 jdk-1.7.0_51
tar czf jdk-1.7.0_51.tgz \
jdk-1.7.0_51
rm jdk-7u51-linux-x64.tar.gz

 

En código fuente

Este lo dejaremos en:

ThirdPartyBuilds/x86_64/java/jdk-1.7.0_51.tgz

. (Crearemos el directorio si necesario)

En opt zimbra

También habrá que descomprimirlo en:

/usr/local/jdk-1.7.0_51

y crearemos el siguiente enlace simbólico:

cd /usr/local
tar xzf ~/zimbra-806-src\
/ironmaiden-806-foss/ThirdPartyBuilds\
/x86_64/java/jdk-1.7.0_51.tgz
ln -s /usr/local/jdk-1.7.0_51 /usr/local/java

 

US Export Policy

Hay que crear el fichero:

 ThirdPartyBuilds/x86_64/java/jce\
 /US_export_policy.jar

que podemos sacar del JDK de Java de nuestro Zimbra de producción en:
./java/jre/lib/security/US_export_policy.jar
Si necesario crearemos el directorio dónde se albergará el fichero.

 mkdir -p ~/zimbra-806-src\
 /ironmaiden-806-foss\
 /ThirdPartyBuilds/x86_64\
 /java/jce

También crearemos:

 local_policy.jar

de igual manera.

Arreglo jar

Haremos que:

ln -s /usr/local/java/bin/jar \
/usr/local/bin/jar

Arreglo ant

mkdir -p /usr/lib/jvm/java-6-openjdk-amd64
 ln -s /usr/local/java/lib/ \
 /usr/lib/jvm/java-6-openjdk-amd64/lib

Arreglo ncurses

ln -s /usr/lib\
 /x86_64-linux-gnu/libncurses.so \
 /usr/lib/libncurses.so

Arreglo zlib1g-dev

ln -s /usr/lib/x86_64-linux-gnu\
 /libz.so /usr/lib/libz.so

Arreglo libltdl-dev

ln -s /usr/lib/x86_64-linux-gnu\
 /libltdl.so /usr/lib/libltdl.so

Arreglo libpcre3-dev

ln -s /usr/lib/x86_64-linux-gnu\
 /libpcre.so /usr/lib/libpcre.so

Arreglo libexpat1-dev

ln -s /usr/lib/x86_64-linux-gnu\
 /libexpat.so /usr/lib/libexpat.so

Arreglo libpopt-dev

 

ln -s /usr/lib/x86_64-linux-gnu\
 /libpopt.so /usr/lib/libpopt.so

 

Junit

Conseguiremos junit desde:

 cd /usr/local/java/jre/lib/ext
 wget "http://downloads.\
 sourceforge.net\
 /project/junit/junit/4.10\
 /junit-4.10.jar?r=http%3A%2F%2F\
 sourceforge.net%2Fprojects%2F\
 junit%2F%3F_test%3Dbeta&ts=\
 1319305477&use_mirror=freefr" \
 -O junit-4.10.jar

 

libjunixsocket-linux-1.5-amd64.so

De producción conseguir el fichero:

 /opt/zimbra/lib/libjunixsocket-linux-1.5-amd64.so

para ponerlo en:

 ThirdPartyBuilds/x86_64/java\
 /junixsocket/libjunixsocket-linux-1.5-amd64.so

creando el directorio si necesario.

Arreglo UnlimitedJCEPolicy7

Creamos el directorio:

 ThirdPartyBuilds/x86_64/java/jce/UnlimitedJCEPolicy7

y dentro de él el fichero vacio: void.txt

libbsd

cd ThirdParty
mkdir libbsd
cd libbsd
apt-get source libbsd
mv libbsd-0.3.0 ../
cd ..
rm -rf libbsd
mv libbsd-0.3.0 libbsd

Sencha

Por lo visto se necesita la versión:
4.0.2.67
De aquí:
http://cdn.sencha.com/cmd/3.1.2.342/release-notes.html
nos podemos descargar:
http://cdn.sencha.com/cmd/3.1.2.342/SenchaCmd-3.1.2.342-linux-x64.run.zip

wget "http://cdn.sencha.com/cmd\
 /4.0.2.67\
 /SenchaCmd-4.0.2.67-linux-x64.run.zip"
 mkdir senchacmd
 cd senchacmd
 unzip ../SenchaCmd\
 -4.0.2.67-linux-x64.run.zip
 chmod +x ./SenchaCmd\
 -4.0.2.67-linux-x64.run.zip
 sudo ./SenchaCmd\
 -4.0.2.67-linux-x64.run

Directorio dónde instalar Sencha:
/usr/local/SenchaCmd
Aúnque lo ejecutemos con sudo nos modicará el .bashrc de nuestro
usuario para que el path sea correcto.
Y ponemos los permisos de nuestro usuario correctos:

 sudo chown -R usuario:usuario \
 /usr/local/SenchaCmd/Sencha/Cmd/ \
 /usr/local/SenchaCmd/Sencha/Cmd/*

Eso sí tendremos que hacer:

source .bashrc

para poder ejecutar sencha sin necesidad de hacer logout y login.

ruby

apt-get installrubygems \
 ruby

Creación opt zimbra

Se creará el directorio /opt/zimbra con los permisos del usuario que com-
pila.

 mkdir /opt/zimbra

Compilación

Para una compilación total en el directorio de compilación haremos:

 ./ZimbraBuild/buildZCS.sh

Compilación final

La compilación final se encuentra en el directorio:

 ZimbraBuild/amd64

. Por ejemplo podría ser:

 zcs-8.0.7_GA_5923.UBUNTU12_64.20140213220301.tgz

Bibliografía

Building Zimbra using Git
https://wiki.zimbra.com/wiki/Building_Zimbra_using_Git
Franklin README
http://wiki.zimbra.com/index.php?title=Franklin_README

Deja un comentario