Intro
Esto del OpenSource es aquello de "si tienes un picor, te rascas... y publicas el código fuente". Incluso para los tutoriales como éste.
Mientras luchaba con unas librerías actualizadas para poder instalar un programa que necesitaba urgentemente, me vi en la necesidad de aprender varios secretos sobre la creación de RPMs en particular y todo tipo de paquetes en general. Y, ya puestos, ¿por qué no hacer un mini-tutorial?
El problema
Encuentras un programa o librería que necesitas para tus aventuras en Linux. Vas a la sección de Downloads y descubres, como no, que solo existen paquetes para las distribuciones que no usas. No falla. Pasa siempre. YPMQ miran la distribución que usas y, dinámicamente, esconden los paquetes que necesitas.
Entonces, te queda bajarte las fuentes del programa / librería, configurarla, cruzar los dedos, compilarla (y que no pete) e instalarla (y que no te rompa nada). Encima, no te garantiza que vas a obtener los "provides" necesarios para instalar el otro programa que es el que realmente quieres instalar.
Como casi siempre, no eres el primero que se encuentra en tamaño brete. Afortunadamente, algunos de los compañeros de penas saben programar, tenían tiempo libre y, en base a código de un proyecto anterior, van y empiezan un proyecto que te va a alegrar: un generador de paquetes!!!
La solución
Efectivamente, existe tal generador de paquetes. No, no es magia negra. Sí, pueden utilizarlo Bilo, Nano... incluso GonzoTBA, alias "cambiar a ReiserFS con 2 c*j*n*s".
El programa se llama CheckInstall. Si os fijais, el proyecto se aloja en una web de Mexico. Eso sí, la documentación que he encontrado, está en el más puro Inglés. Pero no pasa nada. El Sinner lo va a explicar.
¡Crea tus paquetes!
El primer paso consiste en instalarse el programilla. En su sección de Download, lo encontrarás en formato de código fuente (tar.gz), en paquete tipo RedHat/Mandrake/SuSE (rpm), para Debian (deb) y para Slackware (tgz). Vamos, para todos los gustos.
Luego, asegúrate que tienes el programa en cuestión en el PATH del administrador (root). El programita se llama "checkinstall". Si no está en el path de root, ponle un link en, por ejemplo, en /usr/sbin/.
¡Ahora ya estamos preparados para crear nuestros própios paquetes!
El segundo paso será descargar el código fuente del programa o librería que queramos. Lo descomprimimos en un directorio. Ahora toca leerse el README, el BUILD, el COMPILE, el INSTALL y todos esos bonitos y edificantes ficheros. Sí, hay que leerlos. No, no es broma.
Ahora toca configurar el paquete. Primero, haremos un "./configure --help" para ver que se puede configurar. Usualmente podremos configurar (y nos interesará configurar) alguna de estas opciones:
--bindir=DIR
--sbindir=DIR
--target=TARGET
Que son, por orden:
- Directorio "DIR" donde poner los ejecutables
- Directorio "DIR" donde poner los ejecutables para el administrador
- Configurar para la plataforma "TARGET"
Dependiendo del programa configurador, tendrás muchas opciones. Utiliza las que necesites, o las que veas que te crean paquetes con los archivos en su sitio (ya que cada distribución pone los archivos donde les da la gana... aunque ahora el LSB aprece que va a arreglar todo esto.)
Cuando lo tengas claro, procede a dar la orden "./configure" con todas las opciones que necesites, como por ejemplo "./configure --prefix=/usr/share/apps --bindir=/usr/bin --build=i586".
Si te da errores, sé avispado, utiliza Google, los grupos de noticias de EcolNet y tu intuición.
Cuando acabe sin errores, es hora de dar el siguiente paso: la compilación.
¡No te asustes! Es bien facil. Da la orden "make", te vas a por la cervecita y a esperar que acabe la compilación. Evidentemente, si tienes un AthlonMP Dual a 2200, solo podrás tomarte una cañita rápida, y si usas un i386sx, acabarás beodo.
Cuando termine (bién, es de suponer) la compilación, te dirá que es el momento de hacer "make install" como root. En este instante, te cambias a root y utilizas la arcana mágia... digooooo, que utilices el programa CheckInstall, que con la mágia, la casa acaba oliendo a cosas raras.
Da la orden "checkinstall" y, si no le pasas ninguna opción, entrarás en el modo interactivo.
- Primero te pregunta si quieres crear el directorio de documentos ./doc-pak . Responde como te convenga en tu caso.
- Ahora, el programa empieza a darse un garbeo por tu disco y comprueba donde van a acabar cada uno de los archivos que contiene el programa de marras.
- Luego te pregunta qué paquete quieres crear: Slackware [S], RPM [R] o Debian [D]. Como ves es sencillo.
- Si por esas cosas, el paquete original no tiene un "Summary" o pequeño resumen sobre el paquete, te pedirá que lo entres.
- Luego te muestra una lista de las opciones, como esta:
1 - Summary: [ CheckInstall installations tracker, version 1.5.3 ]
2 - Name: [ checkinstall ]
3 - Version: [ 1.5.3 ]
4 - Release: [ 2mdk ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i586 ]
8 - Source location: [ checkinstall-1.5.3 ]
9 - Alternate source location: [ ]
10 - Provides: [ checkinstall ]
Como ves, es autoexplicatio. Cambia lo que quieras. Por ejemplo la Release, para indicar que es una compilación nueva que has hecho y le pones un número más, y le añades un indicativo apra saber que la has hecho tú (GonzoTBA) y acabas poniendo en Release 3gtba, pongamos por caso. Si el programa se distribuye con licencia BSD, pues le cambias el apartado correspondiente. Si quieres compilar especialmente para un Athlon, pues lo cambias.
- Cuando hayas acabado de afinar, le das al enter y ¡empezará la construcción del paquete!
Tras el momento de euforia, verás que acaba diciéndote algo así como:
Done. The new package has been installed and saved to
/usr/src/RPM/RPMS/athlon/checkinstall-1.5.3-3gtba.athlon.rpm
You can remove it from your system anytime using:
rpm -e checkinstall-1.5.3-3gtba
Este anuncio te indica el directorio donde tienes el paquete, que te ha instalado el paquete en el sistema y te da la forma de desinstalarlo. Y ya está.
¿A que no era tan dificil?
Salut,
Sinner