Construcción de paquetes en Slackware

En artículos anteriores vimos como se creaban los paquetes para ciertas aplicaciones que instalamos en nuestro Slackware, pero no explicamos que significa cada uno de los pasos que se deben realizar para la construcción del paquete.
Vamos a tomar como ejemplo el paquete del cliente irc que usamos: irssi
1.- Vamos a movernos al área de trabajo de códigos fuente (No es estrictamente necesario pero ayuda a mantener un mejor orden en el sistema):
root@slackware:~# cd /usr/src
2.- Vamos a descargar el código fuente de la pagina oficial de irssi:
root@slackware:/usr/src# wget http://irssi.org/files/irssi-0.8.14.tar.bz2
3.- Ahora descomprimimos el archivo:
root@slackware:/usr/src# tar -jxvf irssi-0.8.14.tar.bz2
4.- Entramos en el directorio del código fuente que acabamos de descomprimir:
root@slackware:/usr/src# cd irssi-0.8.14
5.- Ahora vamos a comenzar el proceso de compilación para la creación del paquete, para ello ejecutamos un script que se encarga de revisar si tenemos todas las dependencias necesarias para la compilación del código fuente. Este script no se encuentra presente en todos los códigos fuente ya que en algunos casos existen librerías que no tienen dependencias de ningún tipo:
root@slackware:/usr/src/irssi-0.8.14# ./configure –prefix=/usr –sysconfdir=/etc
Como se dan cuenta estoy pasándole dos opciones al script; “prefix” significa la raíz de instalación que va a usar el paquete, es decir donde van a instalarse los archivos y librerías que hacen funcionar el programa, normalmente usamos “/usr” en Slackware ya que si no pasamos esa opción entonces el directorio por omisión sería “/usr/local”, el cual no evita que el programa se ejecute con normalidad pero no estaríamos siguiendo los estándares de Slackware. “sysconfdir” es para indicarle al script donde va a instalar los archivos de configuración del programa a compilar, en otros casos cuando compilamos librerías por ejemplo no es necesario pasarle esta opción ya que éstas no poseen archivos de configuración.
Existen otra variedad de opciones que se pueden utilizar al momento de ejecutar el “configure”, como por ejemplo la opción de que funcione con cierta librería adicional “–with-<modulo>”. Para conocer que opciones se le pueden pasar al script solo basta con escribir “./configure –help”
Si el script detecta la falta de alguna librería en el sistema que sea indispensable para la compilación del paquete entonces nos arrojará un error y tendremos que compilar antes esa librería siguiendo sin problemas los pasos de esta guía.
6.- Una vez que termina la revisión de las dependencias podemos proceder a la compilación del código fuente con el siguiente comando:
root@slackware:/usr/src/irssi-0.8.14# make
Este comando inicia la compilación del código fuente siguiendo los pasos que se encuentran en un archivo llamado “Makefile” que se encuentra dentro del directorio del código fuente, el cual podemos editar antes de ejecutarlo para arreglar cualquier problema que pueda presentarse en el proceso de compilación.
7.- Ahora vamos a crear un directorio en el cual vamos a instalar los archivos:
root@slackware:/usr/src/irssi-0.8.14# mkdir /mnt/paquetes
8.- Ahora procedemos a instalar los archivos que se generaron al completar el proceso de compilación:
root@slackware:/usr/src/irssi-0.8.14# make DESTDIR=/mnt/paquetes install
El parámetro “DESTDIR” lo usamos para indicarle al compilador que queremos instalar los archivos en otro directorio específico como por ejemplo “/mnt/paquetes” y no en la raíz, esto lo hacemos para luego poder construir el paquete de Slackware con otro comando.
9.- Vamos a movernos al destino de instalación:
root@slackware:/usr/src/irssi-0.8.14# cd /mnt/paquetes/
Si listamos el directorio podemos darnos cuenta como esta estructurado el paquete:
root@slackware:/mnt/paquetes# ls -l
total 8
drwxr-xr-x 2 root root 4096 2009-08-22 17:19 etc/
drwxr-xr-x 6 root root 4096 2009-08-22 17:19 usr/
10.- Ahora ya podemos ejecutar el comando que genera el paquete para Slackware, pero antes podemos (Si así lo deseamos) crear el archivo de descripción del programa o librería que vamos a instalar, para ello creamos un directorio llamado “install” y dentro de el creamos un archivo de texto llamado “slack-desc”:
root@slackware:/mnt/paquetes# mkdir install
root@slackware:/mnt/paquetes# vi install/slack-desc
Este archivo lleva una regla especial para que funcione y podamos visualizarlo efectivamente en el momento de la instalación del programa o la librería, esta regla la podemos encontrar en sitios como “slackwiki.org” o “slacky.eu”
# COMO EDITAR ESTE ARCHIVO:
# El “handy-ruler” debajo hace fácil la edición de la descripción del paquete.
# Alinea el primer “|” encima de los “:” siguiendo el nombre base del paquete,
# y el “|” en el lado derecho marca la ultima columna en donde puedes poner un
# caracter. Debes hacer exactamente 11 lineas para que el formato sea correcto.
# También se acostumbra el dejar un espacio después de cada “:”
|——-handy-ruler—————————————————————————–|
irssi: Irssi es un cliente IRC basado en consola para sistemas UNIX
irssi:
irssi: Algunas características que incluye son:
irssi: * Login automático
irssi: * Temas y formatos
irssi: * Accesos de teclado configurables
irssi: * Scripts en perl
irssi: * Proxy y actualización transparente
irssi:
irssi: Empaquetado por: Alejandro Gomez http://irssi.org/
irssi:
11.- Vamos a ejecutar el comando que genera el paquete para Slackware:
root@slackware:/mnt/paquetes# makepkg irssi-0.8.14-i386-1ag.tgz
Como pueden ver el formato estándar para el nombre del paquete va de la siguiente forma: primero va el nombre del programa o librería, luego la versión o revisión, luego la arquitectura en la que fue compilado, luego un número de versión personal y nuestras iniciales, y por último la extensión del paquete.
Nos va a realizar una o dos preguntas acerca de si queremos aplicar los permisos que deben llevar los paquetes a la cual respondemos sí.
¡Listo! Ya tenemos nuestro paquete de Slackware compilado y listo para su instalación por supuesto con el comando:
root@slackware:/mnt/paquetes# installpkg irssi-0.8.14-i386-1ag.tgz
Les recomiendo mover el paquete a algún directorio diferente para luego poder borrar los archivos de instalación que quedaron luego de la compilación:
root@slackware:/mnt/paquetes# mkdir /root/paquetes
root@slackware:/mnt/paquetes# mv irssi-0.8.14-i386-1ag.tgz /root/paquetes/
root@slackware:/mnt/paquetes# rm -r *
Existe otra manera de crear paquetes en Slackware y esta es a través de los “.Slackbuilds”, los cuales son scripts avanzados de compilación de código fuente. Si deciden irse por esta vía les recomiendo usar un slackbuild existente de otro paquete y modificarlo acorde a tus necesidades. Puedes conseguir slackbuilds de “slackbuild.org”, “slacky.eu” o en el CD/DVD de instalación.
Posted: Agosto 23rd, 2009
at 6:24pm by alejandro
Tagged with Slackware
Categories: Paquetes propios, Slackware
Comments: No comments
