Una "forma rápida" de crear paquetes de firefox | Algo de Linux

martes, 15 de enero de 2013

Una "forma rápida" de crear paquetes de firefox

En ocasiones necesitamos crear un paquete para instalar un determinado software en nuestros centros de una manera sencilla y automática. 

A modo de ejemplo vamos a ver cómo crear paquetes de firefox 32 y 64 bits a partir de los .tar.bz2 descargados del ftp de firefox:

Lo primero que haremos será instalar los paquetes alien y fakeroot:

# apt-get install alien fakeroot

Una vez instalados, descargamos las últimas versiones disponibles a día de hoy:

$ wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-i686/es-ES/firefox-18.0.tar.bz2
$ mv firefox-18.0.tar.bz2 firefox-18.0-i386.tar.bz2
$ wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-x86_64/es-ES/firefox-18.0.tar.bz2
$ mv firefox-18.0.tar.bz2 firefox-18.0-amd64.tar.bz2

Una vez descargados, convertimos los ficheros .tar.bz2 a tar.gz:

$ bunzip2 -c <  firefox-18.0-i386.tar.bz2 | gzip -c > firefox-18.0-i386.tar.gz
$ bunzip2 -c <  firefox-18.0-amd64.tar.bz2 | gzip -c > firefox-18.0-amd64.tar.gz

Ahora que los tenemos en formato .tar.gz, los convertimos a .deb usando alien y retocamos lo que queramos.

Vamos a crear primero el paquete de 32 bits:

$ fakeroot alien -dv  firefox-18.0-i386.tar.gz 

Cuando termine, tendremos el paquete: firefox_18.0-2_all.deb

Lo extraemos en una carpeta a la que llamamos, por ejemplo: firefox:


$ dpkg-deb -x firefox_18.0-2_all.deb firefox

$ dpkg-deb --control firefox_18.0-2_all.deb firefox/DEBIAN


A continuación retocamos lo que queramos:


$ cd firefox

$ mkdir opt

$ mv firefox opt/

$ cd .. 


Editamos el fichero  firefox/DEBIAN/control y cambiamos:

Architecture: all 

por:

Architecture: i386

Si necesitáramos hacer operaciones después de instalar, como por ejemplo, crear enlaces o establecer alternativas, podríamos crear el archivo DEBIAN/postinst y añadir en él los comandos que queramos ejecutar al terminar de hacer la instalación. 

Así mismo, podríamos ejecutar acciones antes de desinstalar el paquete, creando el archivo DEBIAN/prerm y añadiendo en él los comandos que queramos ejecutar.

Por último, una vez terminadas las modificaciones empaquetamos de nuevo:


$ dpkg-deb -b firefox firefox_18.0-2_i386.deb


Vamos a crear, por último, el paquete de 64 bits:

$ fakeroot alien -dv firefox-18.0-amd64.tar.gz


$ dpkg-deb -x firefox_18.0-2_all.deb firefox

$ dpkg-deb --control firefox_18.0-2_all.deb firefox/DEBIAN



$ cd firefox

$ mkdir opt

$ mv firefox opt/

$ cd .. 


Editamos el fichero  firefox/DEBIAN/control y cambiamos:

Architecture: all 

por:

Architecture: amd64

Y empaquetamos:


$ dpkg-deb -b firefox firefox_18.0-2_amd64.deb

6 comentarios:

ChemaMeso dijo...

Está muy bien esta herramienta. Pero yo ya lo he practicado tanto con gimp como con inkscape, se instala bien, pero luego no aparece el lanzador. ¿Cómo podría solucionar esto?

Un saludo Esteban.

Esteban M. Navas Martín dijo...

Hola, Chema. Si no te aparece el lanzador, seguramente sea porque el instalador no lo crea, o lo crea en alguna categoría que no tienes visible en tu menú.

Lo que puedes hacer es crear tú mismo el lanzador desde el propio paquete que preparas.

ChemaMeso dijo...

¿Cómo se podría hacer lo que comentas?

Gracias de antemano.

Esteban M. Navas Martín dijo...

Habría que ver el caso concreto.
Comprueba si el programa crea o no el lanzador. Si no lo crea, puedes hacerlo tú desde el script postinst. Echa un vistazo a lo básico de la creación de paquetes Debian:
http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html

ChemaMeso dijo...

He intentado crear el .deb del gimp 2.8. a partir de los tar.bz2 de aquí: ftp://ftp.gimp.org/pub/gimp/v2.8/

Me lo crea bien, pero a la hora de instalarlo lo detecta como ejecutable, pero aparentemente sí está bien instalado:

dpkg -l | grep gimp
ii gimp 2.8.

He puesto en el fichero conffiles expresamente los archivos de menú y desktop antes de crear otra vez el paquete deb:

/opt/gimp-2.8.2/desktop/Makefile.in
/opt/gimp-2.8.2/desktop/Makefile.am
/opt/gimp-2.8.2/menus/Makefile.in
/opt/gimp-2.8.2/menus/Makefile.am

Pero ni aún así los genera... :(

Esteban M. Navas Martín dijo...

Hola, Chema:
Creo que te estás confundiendo. Los lanzadores son ficheros ".desktop" que se almacenan en el directorio /usr/share/applications/

Dentro de los propios archivos desktop se establece en qué menú se van a mostrar. Edita, por ejemplo, el lanzador de gimp-2.6 instalado desde los repositorios (/usr/share/applications/gimp.desktop) Verás que contiene una línea en la que se indica las categorías del menú donde debe mostrarse:

Categories=Graphics;2DGraphics;RasterGraphics;GTK;