Esto no es una guiá de instalación de Zimbra, sino la solución a los problemas de su instalación en sistemas Debian Squezze.
Zimbra no provee todavía paquetes para Debian 6. Por lo que si queremos instalar Zimbra en este sistema, tenemos que, o compilar, o resolver los inconvenientes que se presentan.
Por suerte, resolverlos es muy sencillo. El primer gran problema, es la versión de Perl. Para que Zimbra funcione correctamente hay que realizar un downgrade a la version de lenny. Para ello:
Agregamos el repo de lenny:
Código:
root@zimbra:~/# echo "deb http://ftp.debian.org/ lenny main contrib non-free" >> /etc/apt/sources.list
Instalamos la versión deseada:
Código:
root@zimbra:~# aptitude install perl=5.10.0-19lenny3
Obviamente, esto trae conflictos, que aptitude intentara resolver. La solución adecuada es la tercera:
Código:
Downgrade the following packages:
1) liblocale-gettext-perl [1.05-6 (now, stable) -> 1.05-4 (oldstable)]
2) libperl-dev [5.10.1-17 (now, stable) -> 5.10.0-19lenny3 (oldstable)]
3) libperl5.10 [5.10.1-17 (now, stable) -> 5.10.0-19lenny3 (oldstable)]
4) libuuid-perl [0.02-4 (now, stable) -> 0.02-3+b1 (oldstable)]
5) perl-base [5.10.1-17 (now, stable) -> 5.10.0-19lenny3 (oldstable)]
6) perl-modules [5.10.1-17 (now, stable) -> 5.10.0-19lenny3 (oldstable)]
Accept this solution? [Y/n/q/?] y
Por ultimo, holdeamos estos paquetes para que no se actualicen:
Código:
root@zimbra:~/# echo "libdb4.6 hold" | dpkg --set-selections
root@zimbra:~/# echo "liblocale-gettext-perl hold" | dpkg --set-selections
root@zimbra:~/# echo "libperl-dev hold" | dpkg --set-selections
root@zimbra:~/# echo "libperl5.10 hold" | dpkg --set-selections
root@zimbra:~/# echo "libuuid-perl hold" | dpkg --set-selections
root@zimbra:~/# echo "perl hold" | dpkg --set-selections
root@zimbra:~/# echo "perl-base hold" | dpkg --set-selections
root@zimbra:~/# echo "perl-modules hold" | dpkg --set-selections
Hasta el momento, no me trajo ningún problema con las herramientas del sistema que usan Perl.
Después, otro gran problema es que por alguna razón, el dpkg no parsea la versión si esta contiene el carácter "_", por lo que hay que modificar en cada paquete, el valor de la versión en el fichero de control. Para no hacerlo a monopla, recorde que tenia por ahi un script que encontré para modificar este archivo. Lo único que le modifique al script es que en lugar de llamar a vi, cambie directamente el valor de la versión reemplazando los "_" por "-"
Los paquetes están en el directorio "packages" del instalador de zimbra.
Este es el script:
Código:
root@zimbra:~/# cat /usr/local/bin/modcontrol
#!/bin/bash
if [[ -z "$1" ]]; then
echo "Syntax: $0 debfile"
exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
#vi "$CONTROL"
mv "$CONTROL" "$CONTROL".bk
sed 's/_/-/g' "$CONTROL".bk > "$CONTROL"
rm "$CONTROL".bk
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
mv "$OUTPUT" "$1"
rm -r "$TMPDIR"
Asi se ejecuta en el directorio donde estan los paquetes:
Código:
root@zimbra:~/zcs-6.0.12_GA_2883.DEBIAN5_64.20110305232032/packages# for line in $(ls); do modcontrol $line; done
Con esto, Zimbra ya se instala correctamente. Seguramente algún problema tendré en un futuro, pero veremos que pasa.