|
La magia de los RPM es que en un solo fichero SPEC se incluyen todas las instrucciones para construir un paquete. Eso sĂ, primero hay que entenderlo, y a veces no es fĂ¡cil… |
¿QuĂ© es el fichero SPEC?
BĂ¡sicamente, es el fichero en el que se indica cĂ³mo construir, instalar y desinstalar el paquete.
Las instrucciones que vayamos a darle se dividen por etapas, que a su vez son macros. Estas son las etapas bĂ¡sicas que hay:
- %prep: Se descomprimen las fuentes y se le aplican los parches.
- %build: Se compilan los binarios.
- %check: Se comprueba que se haya compilado bien.
- %install: Se realiza el simulacro de instalaciĂ³n.
- %files: Lista todos los archivos que aparecerĂ¡n en el paquete. Se suele usar tambiĂ©n para asignar atributos. Si hay algĂºn fichero que no estĂ¡ listado, no se construirĂ¡.
Algunos SPEC puede que no tengan algunas de las etapas. No son de uso obligatorio.
Hay otras etapas que se llaman scriptlets. son especiales porque no se ejecutan en el momento de construir el paquete, sino cuando se instala o desinstala. Incluso puedes programar que se ejecute un trigger cuando se instale otro paquete. Esta es una de las grandes ventajas que tiene RPM sobre los ficheros DEB.
El gran lĂo de los RPM es que tiene la misma sintaxis para todo. Es decir, todas estas palabras especiales precedidas de un signo de porcentaje (%) son macros de RPM, pero hay macros de todo tipo:
- Funciones (%setup, %configure, %patch…)
- Variables predefinidas (%_bindir, %dist…)
- Variables definidas en el propio SPEC (%buildroot, %name, %version…)
- Secciones estĂ¡ticas (%description, %changelog…)
- Etapas (%build, %install…)
- Triggers (%triggerin, %triggerpostun…)
- Scriptlets (%pretrans, %postun…)
Para saber cĂ³mo se usa una determinada macro, la Ăºnica forma es consultar la documentaciĂ³n. Bueno, en realidad siempre puedes usar otros trucos como fijarse en cĂ³mo estĂ¡ hecho un SPEC de un paquete parecido al tuyo, o el mĂ©todo de prueba y error. Un par de comandos prĂ¡cticos:
rpmbuild --showrc # Muestra todas tus macros
rpmbuild --eval="%nombre_macro" # Muestra la macro expandida
Las macros son lo mismo si llevan un corchete alrededor. Si despuĂ©s del corchete hay un signo de interrogaciĂ³n, quedarĂ¡ en blanco si no hay nada que expandir. Por ejemplo, 1%{?dist} se expandirĂ¡ a 1.fc16 en Fedora 16, pero en otra distro se quedarĂ¡ como 1.
Abriendo el apetito
Ya vamos por la segunda entrega de este tutorial y todavĂa no sabĂ©is lo que empaquetaremos, asĂ que ahĂ va el vĂdeo para que abrĂ¡is boca: