15 ene 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

Paquetes de firefox 18.0 para instalar en las máquinas de los IES

Habitualmente instalamos software y realizamos configuraciones en nuestras máquinas mediante puppet. 

Uno de los problemas que podemos observar es que si realizamos tareas que instalan firefox o java vía wifi (en el caso de portátiles) desde los ficheros .tar.gz (que tienen un tamaño más o menos grande), aunque limitemos el ancho de banda de descarga de dichos ficheros, posiblemente se nos sature la red.

Para intentar evitar este problema es mejor usar un repositorio propio en el que coloquemos los paquetes (yo uso reprepro). De este modo, las tareas de instalación de los mismos serán muy sencillas y el proveedor de paquetes se encargará de realizar la instalación por nosotros.

A continuación dejo dos enlaces para descargar dos paquetes de 32 y 64 bits creados "de forma rápida" para instalar firefox en /opt/firefox/ en las máquinas del instituto. 
Importante: Estos paquetes tan sólo colocan firefox en /opt/firefox/. No cambian el enlace de /usr/bin/iceweasel a /opt/firefox/firefox para que se siga pudiendo usar iceweasel como navegador por defecto. Para realizar el cambio, tengo dos tareas puppet:
  • activa-firefox
  • activa-iceweasel
  De este modo, si quiero que los portátiles, los servidores ltsp o los workstation usen firefox, les pongo la tarea activa-firefox y si quiero que usen iceweasel, les pongo la tarea activa-iceweasel.

Actualización de java-package: Crear paquetes debian de Java a partir del .tar.gz

Si utilizáis la versión 0.50 de java-package o inferior para crear paquetes debian de java a partir del .tar.gz,  os recomiendo que actualicéis a la versión 0.51. Tal y como está escrito el código del script de conversión, la versión 0.50 tan sólo sirve para paquetes cuya revisión sólo tiene un dígito en el nombre y os va a dar error si tratáis de crear un paquete con las revisiones a partir de la 10.

Dejo un enlace para descargar la nueva versión del paquete:


Lo he probado en Debian Squeeze y funciona perfectamente.