miércoles, 23 de abril de 2014

Crea paquetes rpm y deb desde cualquier distribución Linux!


 La creación de paquetes o empaquetado puede ser fácil y divertido...

Una de las desventajas  de usar alguna distribución es la carencia de paquetes, en estos casos lo mediato es que nos pongamos a compilar el codigo fuente del programa en question, algo no practico y sencillo para alguien que inicia en Linux, y otros factores que imposibiliten su compilación en la distribución destino.  Para solventar estas carencias tenemos fpm Gestión de paquetes Effing!  quien construye paquetes para múltiples plataformas (deb, rpm, etc) con gran facilidad y cordura.

Pero que mas claro que ver la presentación sobre que es realmente http://goo.gl/sWs3Z


2 ejemplos donde usted podría usar fpm

Ejemplo 1

Yo tenia un paquete que cree en rpm en Fedora, y quería instalarselo a una amiga en su Ubuntu, muchos dirían "usa alien" Alien no siempre hará las cosas bien, en Alien usted no puede crear un paquete digamos si tiene un pc de 64 bits (x86_64)  a  32 bits (i386), aunque lo force. 

Ejemplo 2
Encontré un programa que no existe en mi distribucion, y no se absolutamente nada sobre empaquetamiento o simplemente no tengo el tiempo para crear el paquete de forma normal.
 

Si usted se indentifica con cualquiera de los dos ejemplos, la solucion es muy sencilla.


¿Cómo instalo fpm?


Instalamos dependencias

Ubuntu

sudo apt-get -y install ruby-dev rpm

Fedora

su -c 'yum -y install ruby-devel binutils dpkg-devel rpm-build libffi'

Manjaro/Arch Linux
sudo pacman -S ruby libffi
yaourt -S ruby-fpm rpm-org dpkg


Instalamos fpm

Fedora
gem install fpm
Ubuntu

sudo gem install fpm

Manjaro

sudo yaourt -S ruby-fpm



USO

Tengo un rpm o deb

Desde una terminal
mkdir /tmp/installdir

cd  /tmp/installdir

Extraemos nuestro rpm (caso sea .rpm)

Formato
rpm2cpio /path/to/file.rpm | cpio -i --make-directories

Suponiendo que tengo un rpm de App Inventor, appinventor-1.1-1.fc20.x86_64.rpm en mi directorio personal (HOME)

rpm2cpio $HOME/appinventor-1.1-1.fc20.x86_64.rpm | cpio -i --make-directories
 

Extraemos nuestro deb (caso sea .deb)
ar vx $HOME/appinventor-1.1_amd64.deb

tar -xzvf data.tar.gz && rm -f control.tar.gz data.tar.gz debian-binary


Creamos nuestro deb (caso querramos un deb)




Creamos nuestro rpm (caso querramos un rpm)




Explicación
Simplemente usted deberá cambiar los datos anteriores dependiendo su nombre, email, nombre del programa, versión, descripción del programa, etc. siempre respetando todas las comillas,  y guiones.

La ruta al final "usr/google/appinventor/" debe ser cambiada dependiendo la estructura del paquete extraida  en la ruta /tmp/installdir; si se observa el "usr" no inicia con "/" todas las rutas finales que incluyas deberán ir de esa manera.

Podemos crear también nuestro rpm o deb con las lineas de fpm anteriores,  compilando código fuente siempre y cuando, creando como ruta de instalacion en "/tmp/installdir"  no olvidando incluir toda dependencia para que corra el programa que por lo general seria la opcion -d

Ejemplos

-d 'java'

-d 'java >= 6'

-d 'java = 6'

Algo mas claro?, nada del otro mundo veamos el wiki  cada opción de las lineas anteriores tienen su función descrita en el wiki y opciones mas avanzadas.


Referencias:
https://github.com/jordansissel/fpm
Reacciones:

0 comentarios:

Publicar un comentario en la entrada

Si comentas te pedimos por favor respeto y críticas constructivas referentes al título del articulo. Cualquier comentario para desviar el tema, spam o trolleo no será permitido. Gracias por comentar.