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