¿Por qué Fedora y no Alma o Rocky?
Antes que nada, muchos preguntarán ¿Por que no lo hago con Alma, Rocky o cualquiera de las otras ofertas disponibles equivalentes a RedHat? Antes de indicar los pasos explicaré mis razones brevemente:
Fedora es el upstream directo de RHEL, lo que significa que incorpora las tecnologías más recientes antes de que sean probadas, estabilizadas y adoptadas en RHEL (y, por extensión, en sus clones como Rocky o Alma).
-
Ventaja: Fedora Server ofrece acceso temprano a características innovadoras (como nuevas versiones de GNOME, systemd, podman, Wayland, etc.) que pueden tardar años en llegar a RHEL.
-
Filosofía: Fedora representa el progreso tecnológico continuo, mientras que RHEL y sus derivados priorizan la estabilidad a largo plazo. Si una organización valora estar a la vanguardia, Fedora es una opción más alineada con la innovación que con la conservación.
CentOS (antes independiente) fue absorbido por Red Hat y convertido en CentOS Stream, un rolling-release entre Fedora y RHEL. Esto dejó a muchos usuarios sin una alternativa "gratuita" a RHEL, lo que llevó al nacimiento de Rocky y Alma Linux.
-
Desventaja: Estos proyectos dependen de que Red Hat no restrinja el acceso al código fuente de RHEL (como sucedió brevemente en 2023, cuando Red Hat limitó el acceso público a los SRPMs).
-
Filosofía: Si Red Hat decide cambiar su política nuevamente, los proyectos basados en RHEL podrían verse afectados. Fedora, al ser upstream, no tiene este problema, ya que es la base, no una copia.
CentOS Stream es ahora el midstream entre Fedora y RHEL, lo que lo hace más estable que Fedora pero menos que RHEL.
-
Ventaja de Fedora: Si una organización quiere influir en el futuro de RHEL, Fedora es donde ocurre el desarrollo inicial.
-
Desventaja de CentOS Stream: No es tan estable como RHEL, pero tampoco tan innovador como Fedora.
Fedora tiene un ciclo de vida corto (~13 meses por versión), lo que puede ser un problema para entornos que requieren estabilidad a largo plazo.
RHEL y sus clones (Rocky/Alma) ofrecen soporte por hasta 10 años, ideal para empresas.
Mi argumento más fuerte es: Si Red Hat cambia su política de código fuente nuevamente. Fedora, al ser upstream, está más protegido de estos cambios.
Compilando Zimbra en Fedora Server 28 (RHEL8)
Habiendo hecho la explicación previamente veamos entonces como proceder a compilar zimbra en un Fedora server 28 del cual esta basado RHEL8.
# yum groupinstall 'Development Tools' -y # yum install java-1.8.0-openjdk ant ant-junit ruby git maven cpan wget perl-IPC-Cmd vim rpm-build -y # useradd -s /bin/bash -m zmbuild # usermod -aG wheel zmbuild # echo "Fedora release 28" > /etc/redhat-release
# su - zmbuild
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk $ export RPM_BUILD_ROOT=/home/zmbuild/rpmbuild/BUILDROOT $ export RPM_BUILD_DIR=/home/zmbuild/rpmbuild/BUILD $ export PKG_OS_TAG=$(awk '{print "r"$3}' /etc/redhat-release) $ mkdir installer-build $ cd installer-build $ clone --depth 1 --branch 10.1.0 git@github.com:Zimbra/zm-build.git $ cd zm-build
$ ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --git-default-tag=10.1.0 --build-os=RHEL8_64 --build-arch=x86_64 --pkg-os-tag=$(awk '{print "r"$3}' /etc/redhat-release) --build-release-no=10.1.0 --build-type=FOSS --build-release=LIBERTY --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
$ exit # echo "Fedora release 28 (Twenty Eight)" > /etc/redhat-release
Algunas notas sobre la modificación del archivo "/etc/redhat-release"
Para los que pregunten por hacer [echo "Fedora release 28" > /etc/redhat-release] para eliminar "(Twenty Eight)", la respuesta es que durante la compilación
ENV_CACHE_CLEAR_FLAG=true ./build.pl ...el zimbra builder durante la ejecución no puede manipular los espacios y arrojará el siguiente error:
[exec] error: línea 4: La etiqueta solo recibe patrones individuales: Release: 1.r28 (Twenty Eight) [exec] END at ../zm-pkg-tool/pkg-build.pl line 146. [exec] END at ./pkg-builder.pl line 659.
Una solución alterna es compilar
ENV_CACHE_CLEAR_FLAG=true ./build.pl ...Esperar que de el error y agregar en la linea 249 solo el release "r28" en la variable para que el compilador pase sin problemas, el comando sería:
sed -i '249i\ chomp( $gOSTAG = `echo "r28"` );' ../zm-pkg-tool/pkg-build.pl
Luego sería ejecutar nuevamente el comando para continuar compilando
ENV_CACHE_CLEAR_FLAG=true ./build.pl ...
Compilando Zimbra en Fedora Server 34 (RHEL9)
# dnf groupinstall 'Development Tools' -y # dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel ant ant-junit ruby git maven cpan wget perl-IPC-Cmd vim rpm-build -y # useradd -s /bin/bash -m zmbuild # usermod -aG wheel zmbuild # echo "Fedora release 34" > /etc/redhat-release
# update-alternatives --config java # update-alternatives --config javac
# su - zmbuild
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk $ export RPM_BUILD_ROOT=/home/zmbuild/rpmbuild/BUILDROOT $ export RPM_BUILD_DIR=/home/zmbuild/rpmbuild/BUILD $ export PKG_OS_TAG=$(awk '{print "r"$3}' /etc/redhat-release) $ mkdir installer-build $ cd installer-build $ git clone --depth 1 --branch 10.1.0 git@github.com:Zimbra/zm-build.git $ cd zm-build
ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --git-default-tag=10.1.0 --build-os=RHEL9_64 --build-arch=x86_64 --pkg-os-tag=$(awk '{print "r"$3}' /etc/redhat-release) --build-release-no=10.1.0 --build-type=FOSS --build-release=LIBERTY --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
$ exit # echo "Fedora release 34 (Thirty Four)" > /etc/redhat-release