Cómo convertir de RPM a DEB y DEB a RPM con Alien


Como estoy seguro de que ya sabe, hay muchas formas de instalar software en Linux: utilizando el sistema de gestión de paquetes proporcionado por su distribución (aptitude, yum o zypper, por nombrar algunos ejemplos), compilando desde la fuente (aunque algo raro en estos días, era el único método disponible durante los primeros días de Linux), o utilizando una herramienta de bajo nivel como dpkg o rpm con paquetes precompilados .deb y .rpm independientes, respectivamente.

En este artículo, le presentaremos alien, una herramienta que convierte entre diferentes formatos de paquetes de Linux, siendo .rpm a .deb (y viceversa) el uso más común.

Esta herramienta, incluso cuando su autor ya no la mantiene y afirma en su sitio web que alien probablemente siempre permanecerá en estado experimental, puede ser útil si necesita un cierto tipo de paquete pero solo puede encontrar ese programa en otro formato de paquete.

Por ejemplo, alien me salvó el día una vez cuando estaba buscando un controlador .deb para una impresora de inyección de tinta y no pude encontrar ninguno; el fabricante solo proporcionó un paquete .rpm. Instalé alien, convertí el paquete y en poco tiempo pude usar mi impresora sin problemas.

Dicho esto, debemos aclarar que esta utilidad no debe usarse para reemplazar archivos y bibliotecas importantes del sistema, ya que se configuran de manera diferente en las distribuciones. Solo use alien como último recurso si los métodos de instalación sugeridos al principio de este artículo están fuera de discusión para el programa requerido.

Por último, pero no menos importante, debemos tener en cuenta que, aunque usaremos CentOS y Debian en este artículo, se sabe que alien también funciona en Slackware e incluso en Solaris, además de las dos primeras distribuciones y sus respectivas familias.

Paso 1: instalación de Alien y dependencias

Para instalar alien en CentOS/RHEL 7, deberá habilitar los repositorios EPEL y Nux Dextop (sí, es Dextop, no Desktop), en ese orden:

# yum install epel-release
# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

La última versión del paquete que habilita este repositorio es actualmente 0.5 (publicada el 10 de agosto de 2015). Debe consultar http://li.nux.ro/download/nux/dextop/el7/x86_64/ para ver si hay una versión más nueva antes de continuar:

# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

entonces hazlo,

# yum update && yum install alien

En Fedora, solo necesitará ejecutar el último comando.

En Debian y derivados, simplemente haga:

# aptitude install alien

Paso 2: conversión de paquete .deb a .rpm

Para esta prueba, hemos elegido dateutils, que proporciona un conjunto de utilidades de fecha y hora para manejar grandes cantidades de datos financieros. Descargaremos el paquete .deb a nuestra caja de CentOS 7, lo convertiremos a .rpm y lo instalaremos:

# cat /etc/centos-release
# wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
# alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

Importante: (Tenga en cuenta cómo, de forma predeterminada, alien aumenta el número menor de versión del paquete de destino. Si desea anular este comportamiento, agregue la marca –keep-version).

Si intentamos instalar el paquete de inmediato, nos encontraremos con un pequeño problema:

# rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm 

Para resolver este problema, habilitaremos el repositorio epel-testing e instalaremos la utilidad rpmrebuild para editar la configuración del paquete que se va a reconstruir:

# yum --enablerepo=epel-testing install rpmrebuild

Entonces corre,

# rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

Lo que abrirá su editor de texto predeterminado. Vaya a la sección % files y elimine las líneas que se refieren a los directorios mencionados en el mensaje de error, luego guarde el archivo y salga:

Cuando salga del archivo, se le pedirá que continúe con la reconstrucción. Si elige Y, el archivo se reconstruirá en el directorio especificado (diferente al directorio de trabajo actual):

# rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

Ahora puede proceder a instalar el paquete y verificar como de costumbre:

# rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
# rpm -qa | grep dateutils

Finalmente, puede enumerar las herramientas individuales que se incluyeron con dateutils y, alternativamente, consultar sus respectivas páginas de manual:

# ls -l /usr/bin | grep dateutils

Paso 3: conversión de .rpm a .deb Package

En esta sección ilustraremos cómo convertir de .rpm a .deb. En una caja Debian Wheezy de 32 bits, descarguemos el paquete .rpm para el shell zsh desde el repositorio del sistema operativo CentOS 6. Tenga en cuenta que este shell no está disponible por defecto en Debian y derivados.

# cat /etc/shells
# lsb_release -a | tail -n 4
# wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
# alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

Puede ignorar de forma segura los mensajes sobre una firma faltante:

Después de unos momentos, el archivo .deb debería haberse generado y estar listo para instalar:

# dpkg -i zsh_4.3.11-5_i386.deb

Después de la instalación, puede verificar que zsh se agregue a la lista de shells válidos:

# cat /etc/shells

Resumen

En este artículo hemos explicado cómo convertir de .rpm a .deb y viceversa para instalar paquetes como último recurso cuando dichos programas no están disponibles en los repositorios o como código fuente distribuible. Querrá agregar este artículo a favoritos porque todos nosotros necesitaremos alienígenas en un momento u otro.

No dude en compartir sus pensamientos sobre este artículo mediante el formulario a continuación.