Utilizando Correctamente Alien

por | 4 junio, 2008

Hola, a veces no tenemos más remedio que utilizar esta herramienta para poder instalar programas en nuestras distribuciones linuxeras. Alien es un programa de terminal mediante el cual podemos convertir un paquete que está en formato RPM a formato DEB o a formato PKG (el de Solaris) o a formato fuente (TGZ) o a formato SLP (este todavía no se a cual se corresponde).

El caso es que en todos los manuales que veía de alien resulta que hablan de utilizarlo con permisos de superusuario (root), lo cual hace que se cree el paquete en el formato que queramos pero sin los permisos adecuados, me explico; sobre el icono del nuevo paquete que hemos creado nos aparece un dichoso candadito que no lo quita ni su mamaita. Además realizar una conversión de estas características con permisos de superusuario siempre implica un riesgo para nuestro sistema operativo. Así que pensando cómo solucionarlo y recapacitando sobre mis enseñanzas en debianizar he llegado a pensar que la solución es utilizar junto con alien la aplicación fakeroot, que como su nombre indica, lo que hace es “crear” una especie de falso root (superusuario) para engañar a nuestro sistema operativo en tareas de root.

Así pues si queremos convertir un fichero rpm a formato deb escribiremos:

fakeroot alien -d nombre_del_fichero_a_convertir

Para las otras conversiones de formato cambiamos la opción -d por:

  • -r —-> Para convertir a RPM
  • -t —-> Para convertir a TGZ
  • -p —> Para convertir a PKG (formato Solaris)
  • –to-slp —> Para convertir a formato SLP

Otra característica u opción útil con alien es la que nos permite crear los ficheros de construcción del paquete, es decir, a veces al convertir un paquete al formato que queremos no nos ubica los ficheros del programa en los directorios que deseamos. Un ejemplo sencillo de esta problemática es que en vez de colocarnos los ficheros en la ruta /usr/share/ nos los coloca en la ruta /usr/local/share.

Para solucionar esta problemática utilizaremos la opción -g, con la cual podremos posteriormente construir el paquete por nuestra cuenta.

Pongamos como ejemplo que tenemos un paquete que se llama paqueton.rpm y queremos debianizarlo pero no nos gusta donde nos ha metido los ficheros después de usar alien con la opción -d, pues hacemos:

fakeroot alien -g paqueton.rpm

Con esta opción nos creará una carpeta, denominada en nuestro caso paqueton, en la cual contendrá un subdirectorio llamado debian en el que contiene los ficheros control, changelog, copyright y rules. Y luego también dentro del subdirectorio paqueton nos vendrán todos los ficheros del programa a instalar. También nos creará otro paqueton.orig. Una vez creado hacemos los cambios que creamos oportunos y pasamos a debianizarlo, utilizando, por ejemplo; la orden:

debuild -us -uc

Si el caso fuese el querer convertir un .deb a .rpm nos crearía todos los ficheros necesarios para poder crear el rpm, entre ellos el fichero de formato .spec, que en nuestro caso se llamaría paqueton.spec y con el cual podríamos hacer la construcción con el comando:

rpmbuild –ba paqueton.spec

El fichero .spec es el fichero que se utiliza en distros basadas en RedHat para construir los RPM. Dicho fichero, y resumiendo mucho, es un fichero en formato de texto en el cual nosotros editamos todas las instrucciones de cómo se debe construir el paquete RPM. Haciendo un paralelismo algo forzado con Debian, el spec viene a ser la unión del fichero control y el fichero rules de Debian pero con unos cuantos añadidos más.
Otro caso que se me ocurre útil de utilizar esta opción última explicada de alien es cuando a veces el programa no trae los ficheros de acceso directo para los menús ( léase los ficheros .desktop). Con esta alternativa de alien podemos crearlos nosotros con anterioridad y añadirlos donde toquen para después proceder a la construcción del paquete.

Sólo resta decir que alien no debe utilizarse con programas o librerías que sean importantes para el corazón de nuestro sistema operativo, léase kernels, entornos de escritorio, la librería libc, etc.

Saludos :-h