Alien

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Listado de Opciones de Alien)
m (Reordeno secciones)
 
(No se muestran 31 ediciones intermedias realizadas por 2 usuarios)
Línea 1: Línea 1:
{{en desarrollo|RagonichaFulva}}
 
 
 
'''Alien''' es un script en Perl que nos permite convertir entre diferentes [[Formatos_de_paquetes | formatos de paquetes]] binarios de GNU/Linux, pudiendo pasar entre sí cualquiera de estos formatos:  
 
'''Alien''' es un script en Perl que nos permite convertir entre diferentes [[Formatos_de_paquetes | formatos de paquetes]] binarios de GNU/Linux, pudiendo pasar entre sí cualquiera de estos formatos:  
  
Línea 24: Línea 22:
  
 
== Instalación de Alien ==
 
== Instalación de Alien ==
 +
 +
Antes de instalar alien debemos [[Repositorios#Administraci.C3.B3n_de_repositorios|activar los repositorios Universe y Multiverse]].
  
 
Podemos instalar Alien a través de terminal (apt-get o aptitude) o del gestor de paquetes [[Synaptic]] de Ubuntu o [[Adept]] de Kubuntu. De este modo no tendremos que preocuparnos por dependencias.
 
Podemos instalar Alien a través de terminal (apt-get o aptitude) o del gestor de paquetes [[Synaptic]] de Ubuntu o [[Adept]] de Kubuntu. De este modo no tendremos que preocuparnos por dependencias.
Línea 38: Línea 38:
  
  
== Notas sobre el Formato de Paquetes (nivel avanzado) ==
+
=== Requerimientos (nivel avanzado) ===
  
En cuanto al formato de paquetes, para aquellos que quieran saber más de las interioridades (librerías, requisitos, dependencias,...) de este script, podemos añadir lo siguiente. Para un usuario estándar esta información no es precisa, ya que instalando por cualquiera de los métodos mencionados anteriormente ya queda alien perfectamente funcional.
+
Como se ha mencionado más arriba, la instalación de alien mediante un gestor de paquetes como aptitude o apt-get soluciona cualquier problema de dependencias.
  
 +
A pesar de ello, para aquellos que quieran saber los requerimientos de alien (en caso de quere instalar una versión que no esté en los repositorios, etc.) para realizar una instalación "a pelo", es recomendable asegurarse de éstos en la [http://kitenet.net/~joey/code/alien/ página de alien].
  
=== Paquetes RPM ===
+
A fecha de hoy, aunque en la página web de alien ya está disponible la versión 8.69, la versión en los repositorios de Ubuntu Feisty Fawn (7.04) es la 8.65. Sus requerimientos son:
  
Para convertir a .rpm o desde .rpm a otro formato será imprescindible instalar el Gestor de Paquetes RedHat.
+
* '''Paquetes Requeridos''':
 +
:* debhelper (versión mayor o igual a la 3)
 +
:* perl (versión mayor o igual a la 5.6.0-16)
 +
:* rpm (versión mayor o igual a la 2.4.4-2)
 +
:* dpkg-dev
 +
:* make
 +
:* cpio
  
  
=== Paquetes LSB ===
+
* '''Paquetes Sugeridos''':
 +
:* patch
 +
:* bzip2
 +
:* lsb-rpm
 +
:* lintian
  
Unlike the other package formats, alien can handle the depenenden‐
 
          cies of lsb packages if the destination package format supports
 
          dependencies. Note that this means that the package generated from
 
          a lsb package will depend on a package named "lsb" -- your distri‐
 
          bution should provide a package by that name, if it is lsb compli‐
 
          ant. The scripts in the lsb package will be converted by default as
 
          well.
 
 
          To generate lsb packages, the Red Hat Package Manager must be
 
          installed, and alien will use by preference a program named
 
          lsb-rpm, if it exists.  No guarantees are made that the generated
 
          lsb packages will be fully LSB compliant, and it’s rather unlikely
 
          they will unless you build them in the lsbdev environment.
 
 
          Note that unlike other package formats, converting an LSB package
 
          to another format will not cause its minor version number to be
 
          changed.
 
 
 
=== Paquetes DEB ===
 
 
For converting to (but not from) deb format, the gcc, make, deb‐
 
          helper, dpkg-dev, and dpkg packages must be installed.
 
 
 
=== Paquetes TGZ ===
 
 
tgz Note that when converting from the tgz format, alien will simply
 
          generate an output package that has the same files in it as are in
 
          the tgz file. This only works well if the tgz file has precompiled
 
          binaries in it in a standard linux directory tree. Do NOT run alien
 
          on tar files with source code in them, unless you want this source
 
          code to be installed in your root directory when you install the
 
          package!
 
 
 
=== Paquetes PKG ===
 
      pkg To manipulate packages in the Solaris pkg format (which is really
 
          the SV datastream package format), you will need the Solaris
 
          pkginfo and pkgtrans tools.
 
  
  
Línea 124: Línea 95:
  
 
Este comando convertirá a ''package.rpm'' a ''package.deb'' (en el caso de Ubuntu el propio alien ya detecta que se ha de hacer una conversión a .deb, por lo que no es preciso especificar la opción "--to-deb". En otra distribución haría la propio) e instalará el paquete generado directamete.
 
Este comando convertirá a ''package.rpm'' a ''package.deb'' (en el caso de Ubuntu el propio alien ya detecta que se ha de hacer una conversión a .deb, por lo que no es preciso especificar la opción "--to-deb". En otra distribución haría la propio) e instalará el paquete generado directamete.
 +
  
 
{{nota |  
 
{{nota |  
 
* Nótese que cuando hacemos una conversión, en ningún caso se elimina el paquete original, si no que se crea un paquete nuevo en el formato que deseamos. A pesar de ello, si instalamos directamente (usamos la opción -install), el paquete generado sí es eliminado.
 
* Nótese que cuando hacemos una conversión, en ningún caso se elimina el paquete original, si no que se crea un paquete nuevo en el formato que deseamos. A pesar de ello, si instalamos directamente (usamos la opción -install), el paquete generado sí es eliminado.
 
* A pesar de que se pueden usar ambos sistemas para instalar paquetes binarios propios de otras distribuciones, es más recomedable emplear el primer método de hacer primero una conversión y luego instalar el paquete convertido a través de un gestor de paquetes binarios como Gdebi, ya que si surge cualquier problema, tendremos más control sobre lo que vaya ocurriendo. Siempre será mejor trabajar paso a paso.}}
 
* A pesar de que se pueden usar ambos sistemas para instalar paquetes binarios propios de otras distribuciones, es más recomedable emplear el primer método de hacer primero una conversión y luego instalar el paquete convertido a través de un gestor de paquetes binarios como Gdebi, ya que si surge cualquier problema, tendremos más control sobre lo que vaya ocurriendo. Siempre será mejor trabajar paso a paso.}}
 +
  
  
Línea 149: Línea 122:
 
:* '''--patch=patch''': Especificamos el path del patch a usar en vez de buscarlo automáticamente en /var/lib/alien. Esto no tiene efecto a menos que se esté creando un paquete .deb.
 
:* '''--patch=patch''': Especificamos el path del patch a usar en vez de buscarlo automáticamente en /var/lib/alien. Esto no tiene efecto a menos que se esté creando un paquete .deb.
  
:* '''--anypatch''': Permite ser menos estricto acerca del patch que va a ser usado,  
+
:* '''--anypatch''': Permite ser menos estricto acerca del patch que va a ser usado, posiblemente intentando usar un archivo patch para una versión más antigua del paquete. Esto no está garantizado que funcione siempre; patches antiguos no tienen porqué funcionar con paquetes más recientes.
          Be less strict about which patch file is used, perhaps attempting
+
          to use a patch file for an older verson of the package. This is not
+
          guaranteed to always work; older patches may necessarily not work
+
          with newer packages.
+
  
      --nopatch
+
:* '''--nopatch''': Permite no usar ningún archivo patch.
          Do not use any patch files.
+
 
 +
:* '''--fixperms''': Sanea todos los propietarios de archivo y permisos cuando se construye un '''paquete .deb'''. Esto puede ser útil si el paquete original es un desbarajuste. Por otro lado, meterse a tocar permisos y dueños de archivos al grado en que esta opción lo hace, puede romper algunas cosas, por lo que esta opción está desactivada por defecto. Esta opción puede ser empleada únicamente al convertir '''paquetes debian'''.
  
  
Línea 163: Línea 133:
  
 
* '''-t, --to-tgz''': Cualquiera de las dos formas vale. Esta opción crea un paquete .tgz (Slackware) a partir de otro tipo de paquete binario.  
 
* '''-t, --to-tgz''': Cualquiera de las dos formas vale. Esta opción crea un paquete .tgz (Slackware) a partir de otro tipo de paquete binario.  
 +
 +
Además, esta opción permite emplear la siguiente función:
 +
 +
:* '''--description=desc''': Permite especificar una descripción para el paquete binario. Esto sólo tiene un efecto cuando se convierte un '''paquete .tgz''', que carece de descripciones.
  
  
Línea 181: Línea 155:
 
* '''-s, --single''': Opción similar a "--generate", pero que no genera el directorio ''nombredepaquete.orig''. Esto es útil sólo si nos encontramos con un problema de muy poco espacio en disco y que además estamos generando un paquete Debian.
 
* '''-s, --single''': Opción similar a "--generate", pero que no genera el directorio ''nombredepaquete.orig''. Esto es útil sólo si nos encontramos con un problema de muy poco espacio en disco y que además estamos generando un paquete Debian.
  
     
 
* '''--description=desc''': Permite especificar una descripción para el paquete binario. Esto sólo tiene un efecto cuando se convierte un paquete .tgz, que carece de descripciones.
 
  
 
* '''--version=version''': Permite especificar una versión para el paquete binario. Esto sólo tiene un efecto cuando se convierte un paquete .tgz, que pueden carecer de información de versión. Nota: Si pasamos esta opción sin argumentos se mostrará en su lugar la versión de alien.
 
* '''--version=version''': Permite especificar una versión para el paquete binario. Esto sólo tiene un efecto cuando se convierte un paquete .tgz, que pueden carecer de información de versión. Nota: Si pasamos esta opción sin argumentos se mostrará en su lugar la versión de alien.
  
  
      -c, --scripts
+
* '''-c, --scripts''': Intentar convertir los scripts que supuestamente han de ejecutarse cuando el paquete binario es instalado o desinstalado. Hay que usar esta opción con precaución, porque estos scripts pueden estar diseñados para funcionar en distinto del nuestro y podrían causar problemas. Es recomendable examinar los scripts manualmente y comprobarlos para ver lo que hacen antes de usar esta opción. Esta opción está activada por defecto al convertir desde '''paquetes lsb'''.
          Try to convert the scripts that are meant to be run when the pack‐
+
          age is installed and removed. Use this with caution, becuase these
+
          scripts might be designed to work on a system unlike your own, and
+
          could cause problems. It is recommended that you examine the
+
          scripts by hand and check to see what they do before using this
+
          option.
+
  
          This is enabled by default when converting from lsb packages.
 
  
      -T, --test
+
* '''-T, --test''': Testea los paquetes generados. Actualmente esta opción se halla soportada únicamente para '''paquetes debian''', los cuales, si [[Lintian]] está instalado, serán testeados con lintian para luego mostrar la salida por pantalla.
          Test the generated packages. Currently this is only supported for
+
          debian packages, which, if lintian is installed, will be tested
+
          with lintian and lintian’s output displayed.
+
  
      -k, --keep-version
 
          By default, alien adds one to the minor version number of each
 
          package it converts. If this option is given, alien will not do
 
          this.
 
  
       --bump=number
+
* '''-k, --keep-version''': Por defecto, alien cambia la versión de cada paquete generado. Con esta opción, alien no cambia la versión del paquete generado.
          Instead of incrementing the version number of the converted package
+
          by 1, increment it by the given number.
+
        
 +
* '''--bump=number''': En lugar de incrementar en 1 el número de versión de los paquetes convertidos, lo incrementa en base al número que le damos.
  
      --fixperms
 
          Sanitize all file owners and permissions when building a deb. This
 
          may be useful if the original package is a mess. On the other hand,
 
          it may break some things to mess with their permissions and owners
 
          to the degree this does, so it defaults to off. This can only be
 
          used when converting to debian packages.
 
  
      -v, --verbose
+
* '''-v, --verbose''': Muestra por pantalla cada comando que alien ejecuta en el proceso de conversión de un paquete binario.  
          Be verbose: Display each command alien runs in the process of con‐
+
          verting a package.
+
  
      --veryverbose
 
          Be verbose as with --verbose, but also display the output of each
 
          command run. Some commands may generate a lot of output.
 
  
      -h, --help
+
* '''--veryverbose''': Muestra por pantalla cada comando que alien ejecuta en el proceso de conversión de un paquete binario, junto con la salida resultante de la ejecución de cada comando. Algunos comandos pueden generar una salida muy extensa.
          Display a short usage summary.
+
  
      -V, --version
 
          Display the version of alien.
 
  
EXAMPLES
+
* '''-h, --help''': Se muestra un breve resumen de uso de alien.
      Here are some examples of the use of alien:
+
  
      alien --to-deb package.rpm
 
          Convert the package.rpm into a package.deb
 
  
      alien --to-rpm package.deb
+
* '''-V, --version''': Se muestra el número de versión de alien.
          Convert the package.deb into a package.rpm
+
  
      alien -i package.rpm
 
          Convert the package.rpm into a package.deb (converting to a .deb
 
          package is default, so you need not specify --to-deb), and install
 
          the generated package.
 
  
      alien --to-deb --to-rpm --to-tgz --to-slp foo.deb bar.rpm baz.tgz
+
{{nota|Estos modificadores pueden ir concatenados de distintas formas. Por ejemplo:
          Creates 9 new packages. When it is done, foo bar and baz are avail‐
+
          able in all 4 package formats.
+
  
ENVIRONMENT
+
alien -v -d -c paquete.rpm
      alien recognizes the following environemnt variables:
+
  
      RPMBUILDOPTS
+
es lo mismo que:
          Options to pass to rpm when it is building a package.
+
  
      RPMINSTALLOPT
+
alien -vdc paquete.rpm}}
          Options to pass to rpm when it is installing a package.
+
  
      EMAIL
 
          If set, alien assumes this is your email address. Email addresses
 
          are included in generated debian packages.
 
  
NOTES
 
      When using alien to convert a tgz package, all files in /etc in are
 
      assumed to be configuration files.
 
  
      If alien is not run as root, the files in the generated package will
+
== Notas sobre el Formato de Paquetes (nivel avanzado) ==
      have incorrect owners and permissions.
+
  
AUTHOR
+
En cuanto al formato de paquetes, para aquellos que quieran saber más de las interioridades (librerías, requisitos, dependencias,...) de este script, podemos añadir lo siguiente. Para un usuario estándar esta información no es precisa, ya que instalando por cualquiera de los métodos mencionados anteriormente ya queda alien perfectamente funcional.
      alien was written by Christoph Lameter, <clameter@debian.org>.
+
  
      deb to rpm conversion code was taken from the martian program by Ran‐
 
      dolph Chung, <tausq@debian.org>.
 
  
      The Solaris pkg code was written by Mark A. Hershberger <mah@everyâ€â€
+
=== Paquetes RPM ===
      body.org>.
+
  
      alien has been extensively rewritten (3 times) and is now maintained by
+
Para convertir a .rpm o desde .rpm a otro formato será imprescindible instalar el Gestor de Paquetes RedHat.
      Joey Hess, <joeyh@debian.org>.
+
  
COPYRIGHT
 
      alien may be copied and modified under the terms of the GNU General
 
      Public License.
 
  
 +
=== Paquetes LSB ===
 +
 +
A diferencia de con los otros formatos de paquete, alien puede gestionar las dependencias de los paquetes .lsb si el formato de paquete destino soporta dependencias. Hay que considerar que esto significa que el paquete generado a partir de un paquete .lsb dependerá de un paquete denominado "lsb", por lo que nuestra distribución debe proporcionar un paquete con ese nombre (si es una distribución LSB Compliant). Los scripts en ese paquete .lsb serán convertidos también por defecto.
 +
 +
Para generar paquetes .lsb debe estar instalado el Gestor de paquetes Red Hat, y alien usará preferentemente el programa '''lsb-rpm''' si éste está en nuestros sistema. No hay garantías de que los paquetes .lsb generados sean completamente LSB compliant. De hecho, es bastante improbable que lo sean a no ser que los generemos en un entorno ''lsbdev''.
 +
 +
Nótese que a diferencia de otros formatos de paquetes, connvertir un paquete LSB a otro formato no provocará el cambio de su número de versión.
 +
 +
 +
 +
=== Paquetes DEB ===
 +
 +
Para convertir a (pero no desde) formato .deb, deben instalarse los paquetes:
 +
 +
* gcc
 +
* make
 +
* deb‐helper
 +
* dpkg-dev
 +
* dpkg
 +
 +
 +
 +
=== Paquetes TGZ ===
 +
 +
Nótese que cuando convertimos desde un formato tgz, alien generará simplemente un paquete que contendrá los mismos archivos que los que existen en el archivo .tgz. El paquete generado solamente funcionará correctamente si el archivo tgz tenía binarios precompilados en él en un árbol de directorios estándar de GNU/Linux.
 +
 +
 +
{{nota | '''No debe ejecutarse''' alien en archivos .tar con código fuente en ellos, a menos que queramos que ese código fuente instalado en nuestro directorio /root cuando instalemos el paquete.}}
 +
 +
 +
 +
=== Paquetes PKG ===
 +
 +
Para manipular paquetes en formato pkg de Solaris (que es en realidad el formato de paquete SV datastream), necesitaremos las herramientas de Solaris:
 +
 +
* pkginfo
 +
* pkgtrans
 +
 +
 +
 +
== Variables de Entorno Aceptadas por Alien (nivel avanzado) ==
 +
 +
Alien reconoce las siguientes variables de entorno:
 +
 +
* '''RPMBUILDOPTS''': Opciones para pasar a .rpm cuando se está construyendo un paquete.
 +
 +
* '''RPMINSTALLOPT''': Opciones para pasar a .rpm cuando se está instalando un paquete.
 +
 +
* '''EMAIL''': Si se determina, alien asume que éste es nuestra dirección e-mail. Las direcciones de e-mail están incluidas en paquetes debian generados.
 +
 +
 +
 +
== Posibles Problemas ==
 +
 +
A la hora de realizar una conversión de un formato de paquete a otro puede aparecer el siguiente mensaje de error:
 +
 +
Warning: Skipping conversion of scripts in package paqueteaconvertir: nombredescript
 +
Warning: Use the --scripts parameter to include the scripts.
 +
 +
Este mensaje de error nos indica que el paquete binario "paqueteaconvertir" que intentamos convertir contiene scripts (en concreto el script "nombredescript") y nos recomienda que usemos la opción "--scripts" (leer más arriba en el apartado "Opciones de Alien") a la hora de hacer la conversión.
 +
 +
De este modo, en el caso de que trataramos de convertir un paquete .rpm a .deb y que nos mostrara este mensaje por pantalla deberíamos poner:
 +
 +
alien -d --scripts paqueteaconvertir.rpm
 +
 +
Y nos generará el .deb correctamente.
 +
 +
 +
 +
== Notas ==
 +
 +
* Cuando usamos alien para convertir un paquete .tgz, todos los archivos en /etc son considerados como archivos de configuración.
 +
 +
* Si alien no es ejecutado con privilegios de administrador (''root'' o mediante el comando ''sudo''), los archivos en el paquete generado tendrán propietarios y permisos incorrectos.
 +
 +
 +
 +
== Créditos de Alien ==
 +
 +
* Alien fue escrito por '''Christoph Lameter''', de la comunidad Debian.
 +
 +
* La Conversión de .deb a .rpm fue adaptada del programa marciano de '''Randolph Chung''', de la comunidad Debian.
 +
 +
* El código de Solaris pkg fue escrito por '''Mark A. Hershberger'''.
 +
 +
* Alien ha sido extansamente reescrito (tres veces) y es mantenido actualmente por '''Joey Hess''', de la comunidad Debian.
 +
 +
 +
 +
== Licencia ==
 +
 +
Alien puede ser copiado y modificado bajo los términos de la [http://es.wikipedia.org/wiki/Gnu Licencia General Pública GNU].
  
  
perl v5.8.8                      2006-12-20                        ALIEN(1p)
 
  
 
== Fuentes ==
 
== Fuentes ==
Línea 295: Línea 303:
 
* [http://bulma.net/body.phtml?nIdNoticia=1186 Alien: Conversor de paquetes deb, rpm, tgz y slp en linux.] (en español)
 
* [http://bulma.net/body.phtml?nIdNoticia=1186 Alien: Conversor de paquetes deb, rpm, tgz y slp en linux.] (en español)
 
* [http://kitenet.net/~joey/code/alien/ Página del Proyecto Alien] (en inglés)
 
* [http://kitenet.net/~joey/code/alien/ Página del Proyecto Alien] (en inglés)
 +
 +
[[Categoría:Instalar aplicaciones]]

Última revisión de 11:11 21 abr 2008

Alien es un script en Perl que nos permite convertir entre diferentes formatos de paquetes binarios de GNU/Linux, pudiendo pasar entre sí cualquiera de estos formatos:

  • .rpm (RedHat)
  • .deb (Debian)
  • .slp (Stampede)
  • .tgz (Slackware)
  • .pkg (Solaris)

Usando alien podemos por tanto, convertir por ejemplo paquetes precompilados de debian (debian, esware, etc…) a .rpm’s (Red Hat, Conectiva, Mandrake, SuSE,…), o paquetes .rpm a .tgz (muy sencillos de descomprimir), de una forma sencilla, rápida y muy cómoda. También soporta paquetes LSB.


Clip.png Hay que indicar que en la conversión existe una posibilidad de que se puedan perder dependencias, scripts u otras características de los paquetes originales que no se conservarían en el nuevo formato de paquete destino, por lo que el uso de alien esta recomendado si no hay otra opción. Esto es cuando no se disponga del programa que busquemos en el formato de paquetería de nuestra distribución (en el caso de Ubuntu, un .deb).


Contenido

[editar] Precauciones a tener en cuenta en el uso de Alien

Alien no debería ser empleado para sustituir paquetes de sistema importantes como init, libc u otros que sean esenciales para el funcionamiento de nuestro sistema. Muchos de estos paquetes están configurados de forma distinta por las diferentes distribuciones existentes y no son intercambiables.

En general, si no podemos desinstalar/eliminar un paquete determinado de nuestro sistema sin romper la estabilidad del mismo, no debemos intentar cambiarlo con una versión convertida a través de alien.


[editar] Instalación de Alien

Antes de instalar alien debemos activar los repositorios Universe y Multiverse.

Podemos instalar Alien a través de terminal (apt-get o aptitude) o del gestor de paquetes Synaptic de Ubuntu o Adept de Kubuntu. De este modo no tendremos que preocuparnos por dependencias.

Para instalarlo desde uno de los gestores de paquetes gráficos (Synaptic o Adept), sólo hay que buscar el paquete e indicarle "instalar".

Para instalarlo a través de un terminal podemos hacerlo mediante apt-get:

sudo apt-get install alien

o mediante aptitude:

sudo aptitude install alien


[editar] Requerimientos (nivel avanzado)

Como se ha mencionado más arriba, la instalación de alien mediante un gestor de paquetes como aptitude o apt-get soluciona cualquier problema de dependencias.

A pesar de ello, para aquellos que quieran saber los requerimientos de alien (en caso de quere instalar una versión que no esté en los repositorios, etc.) para realizar una instalación "a pelo", es recomendable asegurarse de éstos en la página de alien.

A fecha de hoy, aunque en la página web de alien ya está disponible la versión 8.69, la versión en los repositorios de Ubuntu Feisty Fawn (7.04) es la 8.65. Sus requerimientos son:

  • Paquetes Requeridos:
  • debhelper (versión mayor o igual a la 3)
  • perl (versión mayor o igual a la 5.6.0-16)
  • rpm (versión mayor o igual a la 2.4.4-2)
  • dpkg-dev
  • make
  • cpio


  • Paquetes Sugeridos:
  • patch
  • bzip2
  • lsb-rpm
  • lintian


[editar] Guía de Uso Rápido (para impacientes)

El uso que le vamos a dar a Alien va a ser principalmente para:

  • Convertir un Paquete propio de otra Distribución a otro Formato
  • Convertir e Instalar un Paquete propio de otra Distribución en nuestra Distribución


[editar] Convertir un Paquete propio de otra Distribución a otro Formato

En este caso no queremos instalarlo, si no sólo convertirlo para ponerlo a disposición de la comunidad o por otros motivos. Para ello debemos usar una de las siguientes opciones:

alien --to-deb package.rpm  ----> Convertimos el paquete "package.rpm" a formato deb en el paquete "package.deb"
alien --to-rpm package.deb  ----> Convertimos el paquete "package.deb" a formato rpm en el paquete "package.rpm"

Incluso podemos hacer conversiones múltiples:

alien --to-deb --to-rpm --to-tgz --to-slp foo.deb bar.rpm baz.tgz  

En este caso creamos 9 paquetes nuevos. Cuando finaliza el proceso, foo.deb, bar.rpm y baz.tgz estarán disponibles en los 4 formatos de paquete: .deb, .rpm, .tgz y .slp.


[editar] Convertir e Instalar un Paquete propio de otra Distribución en nuestra Distribución

Para hacer esto podemos convertir primero el paquete al formato binario que deseemos y luego instalarlo con el gestor de paquetes binarios propios de nuestra distribución. En Ubuntu sería un paquete .deb que instalaríamos a través de terminal con dpkg o gráficamente con Gdebi.

Si por el contrario queremos convertir el paquete e instalarlo directamente, tendríamos que abrir una terminal y escribir:

alien -i package.rpm

Este comando convertirá a package.rpm a package.deb (en el caso de Ubuntu el propio alien ya detecta que se ha de hacer una conversión a .deb, por lo que no es preciso especificar la opción "--to-deb". En otra distribución haría la propio) e instalará el paquete generado directamete.


Clip.png
  • Nótese que cuando hacemos una conversión, en ningún caso se elimina el paquete original, si no que se crea un paquete nuevo en el formato que deseamos. A pesar de ello, si instalamos directamente (usamos la opción -install), el paquete generado sí es eliminado.
  • A pesar de que se pueden usar ambos sistemas para instalar paquetes binarios propios de otras distribuciones, es más recomedable emplear el primer método de hacer primero una conversión y luego instalar el paquete convertido a través de un gestor de paquetes binarios como Gdebi, ya que si surge cualquier problema, tendremos más control sobre lo que vaya ocurriendo. Siempre será mejor trabajar paso a paso.


[editar] Listado de Opciones de Alien

Las opciones son lo que dan funcionalidad y potencia al script. A pesar de ello, si no ponemos opciones, Alien convertirá de forma predeterminada cualquier paquete que le presentemos a formato .deb.

En caso de usar opciones, el formato de uso será:

alien [options] file [...]

Las opciones posibles son:

  • file [...]: Paquete o lista de archivos de paquetes para convertir. En realidad no es una opción, ya que se trata de los nombres de los paquetes a convertir sin más (como se ha visto en el apartado de Guía de Uso Rápido).


  • -d, --to-deb: Cualquiera de las dos formas vale. Esta opción crea un paquete .deb (Debian) a partir de otro tipo de paquete binario. Esta opción es la opción por defecto, asi que la podemos obviar si lo deseamos.

Además, esta opción permite emplear las siguientes funciones:

  • --patch=patch: Especificamos el path del patch a usar en vez de buscarlo automáticamente en /var/lib/alien. Esto no tiene efecto a menos que se esté creando un paquete .deb.
  • --anypatch: Permite ser menos estricto acerca del patch que va a ser usado, posiblemente intentando usar un archivo patch para una versión más antigua del paquete. Esto no está garantizado que funcione siempre; patches antiguos no tienen porqué funcionar con paquetes más recientes.
  • --nopatch: Permite no usar ningún archivo patch.
  • --fixperms: Sanea todos los propietarios de archivo y permisos cuando se construye un paquete .deb. Esto puede ser útil si el paquete original es un desbarajuste. Por otro lado, meterse a tocar permisos y dueños de archivos al grado en que esta opción lo hace, puede romper algunas cosas, por lo que esta opción está desactivada por defecto. Esta opción puede ser empleada únicamente al convertir paquetes debian.


  • -r, --to-rpm: Cualquiera de las dos formas vale. Esta opción crea un paquete .rpm (RedHat) a partir de otro tipo de paquete binario.


  • -t, --to-tgz: Cualquiera de las dos formas vale. Esta opción crea un paquete .tgz (Slackware) a partir de otro tipo de paquete binario.

Además, esta opción permite emplear la siguiente función:

  • --description=desc: Permite especificar una descripción para el paquete binario. Esto sólo tiene un efecto cuando se convierte un paquete .tgz, que carece de descripciones.


  • --to-slp: Esta opción crea un paquete .slp (Stampede) a partir de otro tipo de paquete binario.


  • -p, --to-pkg: Cualquiera de las dos formas vale. Esta opción crea un paquete .pkg (Solaris) a partir de otro tipo de paquete binario.


  • -i, --install: Automaticamente instalar cada paquete generado por la transformación y seguidamente eliminarlo una vez instalado.


  • -g, --generate: Crea un directorio temporal adecuado para ser empleado como base para construir un paquete binario, pero que se queda ahi y de hecho no crea dicho paquete. Esto es útil para usuarios avanzados que quieran quieres trabajar con los archivos, moverlos o adaptarlos antes de construir el paquete binario definitivo. Este paquete definitivo puede ser construido a partir del directorio temporal empleando:
  • "debian/rules binary": Para crear un paquete Debian (.deb)
  • "rpmbuild -bb <packagename>.spec": Para crear un paquete RedHat (.rpm)


  • -s, --single: Opción similar a "--generate", pero que no genera el directorio nombredepaquete.orig. Esto es útil sólo si nos encontramos con un problema de muy poco espacio en disco y que además estamos generando un paquete Debian.


  • --version=version: Permite especificar una versión para el paquete binario. Esto sólo tiene un efecto cuando se convierte un paquete .tgz, que pueden carecer de información de versión. Nota: Si pasamos esta opción sin argumentos se mostrará en su lugar la versión de alien.


  • -c, --scripts: Intentar convertir los scripts que supuestamente han de ejecutarse cuando el paquete binario es instalado o desinstalado. Hay que usar esta opción con precaución, porque estos scripts pueden estar diseñados para funcionar en distinto del nuestro y podrían causar problemas. Es recomendable examinar los scripts manualmente y comprobarlos para ver lo que hacen antes de usar esta opción. Esta opción está activada por defecto al convertir desde paquetes lsb.


  • -T, --test: Testea los paquetes generados. Actualmente esta opción se halla soportada únicamente para paquetes debian, los cuales, si Lintian está instalado, serán testeados con lintian para luego mostrar la salida por pantalla.


  • -k, --keep-version: Por defecto, alien cambia la versión de cada paquete generado. Con esta opción, alien no cambia la versión del paquete generado.


  • --bump=number: En lugar de incrementar en 1 el número de versión de los paquetes convertidos, lo incrementa en base al número que le damos.


  • -v, --verbose: Muestra por pantalla cada comando que alien ejecuta en el proceso de conversión de un paquete binario.


  • --veryverbose: Muestra por pantalla cada comando que alien ejecuta en el proceso de conversión de un paquete binario, junto con la salida resultante de la ejecución de cada comando. Algunos comandos pueden generar una salida muy extensa.


  • -h, --help: Se muestra un breve resumen de uso de alien.


  • -V, --version: Se muestra el número de versión de alien.


Clip.png Estos modificadores pueden ir concatenados de distintas formas. Por ejemplo:
alien -v -d -c paquete.rpm

es lo mismo que:

alien -vdc paquete.rpm


[editar] Notas sobre el Formato de Paquetes (nivel avanzado)

En cuanto al formato de paquetes, para aquellos que quieran saber más de las interioridades (librerías, requisitos, dependencias,...) de este script, podemos añadir lo siguiente. Para un usuario estándar esta información no es precisa, ya que instalando por cualquiera de los métodos mencionados anteriormente ya queda alien perfectamente funcional.


[editar] Paquetes RPM

Para convertir a .rpm o desde .rpm a otro formato será imprescindible instalar el Gestor de Paquetes RedHat.


[editar] Paquetes LSB

A diferencia de con los otros formatos de paquete, alien puede gestionar las dependencias de los paquetes .lsb si el formato de paquete destino soporta dependencias. Hay que considerar que esto significa que el paquete generado a partir de un paquete .lsb dependerá de un paquete denominado "lsb", por lo que nuestra distribución debe proporcionar un paquete con ese nombre (si es una distribución LSB Compliant). Los scripts en ese paquete .lsb serán convertidos también por defecto.

Para generar paquetes .lsb debe estar instalado el Gestor de paquetes Red Hat, y alien usará preferentemente el programa lsb-rpm si éste está en nuestros sistema. No hay garantías de que los paquetes .lsb generados sean completamente LSB compliant. De hecho, es bastante improbable que lo sean a no ser que los generemos en un entorno lsbdev.

Nótese que a diferencia de otros formatos de paquetes, connvertir un paquete LSB a otro formato no provocará el cambio de su número de versión.


[editar] Paquetes DEB

Para convertir a (pero no desde) formato .deb, deben instalarse los paquetes:

  • gcc
  • make
  • deb‐helper
  • dpkg-dev
  • dpkg


[editar] Paquetes TGZ

Nótese que cuando convertimos desde un formato tgz, alien generará simplemente un paquete que contendrá los mismos archivos que los que existen en el archivo .tgz. El paquete generado solamente funcionará correctamente si el archivo tgz tenía binarios precompilados en él en un árbol de directorios estándar de GNU/Linux.


Clip.png No debe ejecutarse alien en archivos .tar con código fuente en ellos, a menos que queramos que ese código fuente instalado en nuestro directorio /root cuando instalemos el paquete.


[editar] Paquetes PKG

Para manipular paquetes en formato pkg de Solaris (que es en realidad el formato de paquete SV datastream), necesitaremos las herramientas de Solaris:

  • pkginfo
  • pkgtrans


[editar] Variables de Entorno Aceptadas por Alien (nivel avanzado)

Alien reconoce las siguientes variables de entorno:

  • RPMBUILDOPTS: Opciones para pasar a .rpm cuando se está construyendo un paquete.
  • RPMINSTALLOPT: Opciones para pasar a .rpm cuando se está instalando un paquete.
  • EMAIL: Si se determina, alien asume que éste es nuestra dirección e-mail. Las direcciones de e-mail están incluidas en paquetes debian generados.


[editar] Posibles Problemas

A la hora de realizar una conversión de un formato de paquete a otro puede aparecer el siguiente mensaje de error:

Warning: Skipping conversion of scripts in package paqueteaconvertir: nombredescript
Warning: Use the --scripts parameter to include the scripts.

Este mensaje de error nos indica que el paquete binario "paqueteaconvertir" que intentamos convertir contiene scripts (en concreto el script "nombredescript") y nos recomienda que usemos la opción "--scripts" (leer más arriba en el apartado "Opciones de Alien") a la hora de hacer la conversión.

De este modo, en el caso de que trataramos de convertir un paquete .rpm a .deb y que nos mostrara este mensaje por pantalla deberíamos poner:

alien -d --scripts paqueteaconvertir.rpm

Y nos generará el .deb correctamente.


[editar] Notas

  • Cuando usamos alien para convertir un paquete .tgz, todos los archivos en /etc son considerados como archivos de configuración.
  • Si alien no es ejecutado con privilegios de administrador (root o mediante el comando sudo), los archivos en el paquete generado tendrán propietarios y permisos incorrectos.


[editar] Créditos de Alien

  • Alien fue escrito por Christoph Lameter, de la comunidad Debian.
  • La Conversión de .deb a .rpm fue adaptada del programa marciano de Randolph Chung, de la comunidad Debian.
  • El código de Solaris pkg fue escrito por Mark A. Hershberger.
  • Alien ha sido extansamente reescrito (tres veces) y es mantenido actualmente por Joey Hess, de la comunidad Debian.


[editar] Licencia

Alien puede ser copiado y modificado bajo los términos de la Licencia General Pública GNU.


[editar] Fuentes

Herramientas personales