Está en la página 1de 16

RPM COMO

Donnie Barnes, djb@redhat.com Traductor: Antonio Ismael Olea Gonz lez, a olea@iname.com 2:345/108.9@fidonet.org V2.0, April 8, 1997

Este documento describe el uso del formato de paquetes de instalacion que se ha convertido en estandar de facto, el RPM (RedHat Package Manager)

Indice General
1 2 3 Introducci n o Visi n general o Informaci n general o 3.1 3.2 4 5 6 Adquirir RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requerimientos de RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 3 3 5 6 6 7 8 10 11 11 11 11 12 12 12 13 13 13 14 14

Usando RPM Y ahora, qu puedo hacer de verdad con RPM? e Construyendo paquetes RPM 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 El chero rpmrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El chero spec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La Cabecera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %prep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guiones opcionales pre y post Install/Uninstall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Construcci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.9.1 6.9.2 6.9.3 6.9.4 El Arbol de Directorios de los Fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prueba de construcci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Creaci n de la Lista de Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Construyendo el paquete con RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.10 Prob ndolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 6.11 Qu hacer con los nuevos paquetes RPM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 6.12 Y ahora qu ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e

1. Introducci n o

Construcci n multi-arquitectura de paquetes RPM o 7.1 7.2 7.3 7.4 7.5 Ejemplo de chero spec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14 14 15 15 15 16 16 16

Optflags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Excluyendo arquitectura de los paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acabando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 9

Copyright Anexo: El INSFLUG

Introducci n o

RPM es el gestor de paquetes de Red Hat (Red Hat Package Manager). Aunque aparece Red Hat en su nombre, la intenci n es que sea un sistema de empaquetado abierto y disponible para el uso de cualquiera. Permite a los usuarios o tomar el c digo fuente (source code) y empaquetarlo en forma de fuentes y binaria de forma que los cheros binarios o sean f cilmente instalables y rastreables y los fuentes puedan ser reconstruidas con facilidad. Tambi n gestiona una a e base de datos de todos los paquetes y sus cheros que puede ser usada para vericar paquetes e interrogarla para obtener informaci n acerca de cheros y/o paquetes. o Red Hat Software anima a otros vendedores de distribuciones a dedicar un rato para examinar RPM y usarlo para sus propias distribuciones. RPM es completamente exible y f cil de usar, aunque provee la base para un sistema a muy extenso. Tambi n es completamente abierto y disponible aunque agradeceramos informes de fallos (bugs) y sus e reparaciones (xes). Se concede permiso para usar y distribuir RPM, libre de royalties, bajo la protecci n de la licencia o GPL. Puede encontrar informaci n m s completa sobre RPM en el libro de Ed Bailey Maximum RPM. Dicho libro est o a a disponible en www.redhat.com.

Visi n general o

Primero, permtame expresar parte de la losofa tras RPM. Uno de los objetivos del dise o fue permitir el uso de n fuentes prstinas1 . Con RPP (nuestro anterior sistema de empaquetado del cual RPM no deriva en absoluto), nuestros paquetes de fuentes deban ser hackeados2 para poder construir las aplicaciones desde ellos. Te ricamente, se poda instalar un paquete o fuente RPP y efectuarle un make sin problemas. Pero los fuentes no eran las originales, y no haba referencia alguna a los cambios que habamos hecho para que pudieran compilar. Se haca pues necesario bajarse los fuentes originales de forma separada. Con RPM, tiene los fuentes originales junto al parche3 que hemos usado para poder compilarlo. Vemos en esto una gran ventaja. Por qu ? Son varias las razones. La primera es que si sale disponible una nueva versi n de un programa, e o usted no necesita empezar desde la nada para conseguir que compile bajo RHL. Puede examinar el parche para saber qu podra necesitar hacer. De esta manera toda la conguraci n por defecto de compilaci n queda f cilmente a la e o o a vista.
1 2

N.T.: originales N.T.: retocados 3 N.T.: patch en el original

3. Informaci n general o

RPM tambi n est dise ado para disponer de potentes par metros de consulta. Usted puede hacer b squedas de e a n a u paquetes a lo largo de toda la base de datos o s lo de ciertos cheros. Tambi n puede encontrar f cilmente a qu o e a e paquete pertenece un chero y de d nde proviene. Los cheros RPM en s mismos son archivos comprimidos, pero o puede consultar paquetes independientes f cil y r pidamente, gracias a una cabecera binaria a medida a adida al a a n paquete con toda la informaci n que puede necesitar, almacenada sin comprimir. Esto permite consultas r pidas. o a Otra poderosa caracterstica es la habilidad de vericar paquetes. Si est preocupado por haber borrado alg n chero a u importante, s lo tiene que vericar el paquete. Quedar cumplidamente informado de cualquier anomala. Llegados o a a ese punto, podr reinstalar el paquete si lo considera necesario. Cualquier chero de conguraci n que usted tenga a o quedar a salvo. a Queremos agradecer a los colegas de la distribuci n BOGUS por muchas de sus ideas y conceptos que han sido o incluidos en RPM. Aunque RPM est completamente escrito por Red Hat Software, su funcionamiento est basado en a a c digo escrito por BOGUS (PM y PMS). o

Informaci n general o

3.1 Adquirir RPM


La mejor forma de conseguir RPM es instalando Red Hat Commercial Linux. Si no quiere hacer eso, puede seguir usando RPM. Puede conseguirse en: ftp.redhat.com/pub/redhat/code/rpm

3.2 Requerimientos de RPM


El principal requerimiento para ejecutar RPM es cpio 2.4.2 o superior. Aunque el sistema fue ideado para ser usado con Linux, puede ser perfectamente portado a cualquier sistema Unix. De hecho, ha sido compilado en SunOS, Solaris, AIX, Irix, AmigaOS, y otros. Queda advertido que los paquetes binarios generados en diferentes tipos de sistemas Unix no ser n compatibles. a Estos son los mnimos requerimientos para instalar RPMs. Para construir RPMs a partir de los fuentes, necesitar todo a lo normalmente requerido para construir un paquete, cosas como gcc, make, etc.

Usando RPM

En su forma m s simple, RPM puede usarse para instalar paquetes: a


rpm -i foobar-1.0-1.i386.rpm

El siguiente comando m s simple es desinstalar un paquete: a


rpm -e foobar

Uno de los m s complejos pero m s utiles comandos le permiten instalar paquetes a trav s de FTP. Si est conectado a a e a a la Red y quiere instalar un nuevo paquete, todo lo que necesita hacer es especicar el chero con un URL v lido, a como esto:
rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm

4. Usando RPM

Apercbase de que ahora RPM puede hacer consultas y/o instalaciones a trav s de FTP. e Aunque estos son comandos simples, rpm puede usarse de multitud de formas, como puede verse en el mensaje de Ayuda:
RPM version 2.3.9 Copyright (C) 1997 - Red Hat Software This may be freely redistributed under the terms of the GNU Public License usage: rpm rpm rpm rpm {--help} {--version} {--initdb} [--dbpath <dir>] {--install -i} [-v] [--hash -h] [--percent] [--force] [--test] [--replacepkgs] [--replacefiles] [--root <dir>] [--excludedocs] [--includedocs] [--noscripts] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ignoreos] [--nodeps] [--ftpproxy <host>] [--ftpport <port>] file1.rpm ... fileN.rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test] [--oldpackage] [--root <dir>] [--noscripts] [--excludedocs] [--includedocs] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ftpproxy <host>] [--ftpport <port>] [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R] [--scripts] [--root <dir>] [--rcfile <file>] [--whatprovides] [--whatrequires] [--requires] [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>] [--provides] [--dump] [--dbpath <dir>] [targets] {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts] [--nomd5] [targets] {--setperms} [-afpg] [target] {--setugids} [-afpg] [target] {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--allmatches] package1 ... packageN {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile <file>] [--sign] [--test] [--timecheck <s>] specfile {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm {--resign} [--rcfile <file>] package1 package2 ... packageN {--addsign} [--rcfile <file>] package1 package2 ... packageN {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>] package1 ... packageN {--rebuilddb} [--rcfile <file>] [--dbpath <dir>] {--querytags}

rpm

rpm

rpm

rpm rpm rpm

rpm rpm rpm rpm rpm rpm rpm rpm

Podr encontrar m s detalles acerca de la funci n de estos parametros en la p gina del manual de RPM. a a o a

5. Y ahora, qu puedo hacer de verdad con RPM? e

Y ahora, qu puedo hacer de verdad con RPM? e

RPM es una herramienta potentsima y, como puede ver, dispone de varios par metros. La mejor forma de apercibirse a de ellas es examinando unos cuantos ejemplos. Antes mostramos una instalaci n/desinstalaci n sencilla, ahora van o o unos cuantos m s: a
 Supongamos que ha borrado unos cuantos cheros por accidente, pero no est seguro de qu es lo que ha a e borrado. Si quiere vericar completamente su sistema y ver qu se ha perdido, puede hacer: e
rpm -Va

 Supongamos que se encuentra con un chero que no reconoce. Para saber a qu paquete pertenece puede hacer: e
rpm -qf /usr/X11R6/bin/xjewel

La salida podra ser:


xjewel-1.6-1

 Supongamos que acaba de hacerse con un nuevo paquete RPM de koules, pero no sabe qu puede ser. Para e obtener informaci n al respecto: o
rpm -qpi koules-1.2-2.i386.rpm

La salida podra ser:


Name : koules Distribution: Red Hat Linux Colgate Version : 1.2 Vendor: Red Hat Software Release : 2 Build Date: Mon Sep 02 11:59:12 1996 Install date: (none) Build Host: porky.redhat.com Group : Games Source RPM: koules-1.2-2.src.rpm Size : 614939 Summary : SVGAlib action game with multiplayer, network, and sound support Description : This arcade-style game is novel in conception and excellent in execution. No shooting, no blood, no guts, no gore. The play is simple, but you still must develop skill to play. This version uses SVGAlib to run on a graphics console.

 Ahora quiere saber qu cheros instala el paquete RPM. Puede hacer: e


rpm -qpl koules-1.2-2.i386.rpm

La salida es:
/usr/doc/koules /usr/doc/koules/ANNOUNCE /usr/doc/koules/BUGS /usr/doc/koules/COMPILE.OS2 /usr/doc/koules/COPYING /usr/doc/koules/Card /usr/doc/koules/ChangeLog /usr/doc/koules/INSTALLATION /usr/doc/koules/Icon.xpm /usr/doc/koules/Icon2.xpm /usr/doc/koules/Koules.FAQ /usr/doc/koules/Koules.xpm

6. Construyendo paquetes RPM

/usr/doc/koules/README /usr/doc/koules/TODO /usr/games/koules /usr/games/koules.svga /usr/games/koules.tcl /usr/man/man6/koules.svga.6

Estos son s lo unos pocos ejemplos. Otros, a n m s creativos, podr hacerlos f cilmente una vez que se haya familiao u a a a rizado con RPM.

Construyendo paquetes RPM

Construir paquetes RPM es algo realmente f cil de hacer, especialmente si puede conseguir que el software que intenta a empaquetar pueda compilarse por s mismo. El procedimiento b sico es el siguiente: a
 Aseg rese que su /etc/rpmrc est congurado para su sistema. u a  H gase con el c digo fuente del software a empaquetar para ser compilado en su sistema. a o  Haga un parche con todos los cambios que ha tenido que realizar para que los fuentes se compilen adecuadamente.  Cree un chero .spec para el paquete.  Aseg rese de que todo est en su sitio. u a  Construya el paquete usando RPM.

En general, RPM construir tanto el paquete binario como el de los fuentes. a

6.1 El chero rpmrc


En lo sucesivo, la unica conguraci n de RPM est disponible en el chero /etc/rpmrc. Este puede tener la o a siguiente apariencia:
require_vendor: 1 distribution: I roll my own! require_distribution: 1 topdir: /usr/src/me vendor: Mickiesoft packager: Mickeysoft Packaging Account <packages@mickiesoft.com> optflags: i386 -O2 -m486 -fno-strength-reduce optflags: alpha -O2 optflags: sparc -O2 signature: pgp pgp_name: Mickeysoft Packaging Account pgp_path: /home/packages/.pgp tmppath: /usr/tmp

6. Construyendo paquetes RPM

La lnea require vendor obliga a RPM a requerir una lnea de vendor (distribuidor). Esta puede venir o bien del propio chero /etc/rpmrc o de la cabecera del chero .spec. Para desactivar este par metro debe cambiarse el a n mero a 0. Esto tambi n se aplica a las lneas require distribution y require group. u e La siguiente lnea es la de distribution4 . Puede denirla bien aqu o bien en el chero .spec. Cuando se empaqueta para una distribuci n en concreto, es buena idea asegurarse de que esta lnea es correcta, incluso cuando o 5 no se requiera. La lnea de vendor funciona de la misma manera, aunque puede contener cualquier cosa (ej.: Joes Software and Rock Music Emporium). RPM tambi n soporta ahora el empaquetado de paquetes para m ltiples arquitecturas. El chero rpmrc puede incluir e u una variable de opciones (optflags) que contiene par metros especcos a la arquitectura. Lea secciones posteriores a para saber c mo usar esta variable. o En adici n a las macros anteriores, hay disponibles unas cuantas m s. Puede usar: o a
rpm --showrc

para saber cu l de sus etiquetas est n conguradas y cu les son los par metros disponibles. a a a a

6.2 El chero spec


Ahora hablaremos del chero .spec. Estos cheros son imprescindibles para construir un paquete. El chero spec es una descripci n del software acompa ado con instrucciones sobre c mo construirlo y una lista de cheros de todos o n o los binarios instalados. Debera nombrar a sus cheros spec de acuerdo a una convenci n est ndar. Tal como nombre de paquete-gui n o a o n mero de versi n-gui n-n mero de publicaci n-punto-spec. u o o u o A continuaci n, un peque o chero spec (eject-1.4.spec): o n
Summary: ejects ejectable media and controls auto ejection Name: eject Version: 1.4 Release: 3 Copyright: GPL Group: Utilities/System Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz Patch: eject-1.4-make.patch Patch1: eject-1.4-jaz.patch %description This program allows the user to eject media that is autoejecting like CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines. %prep %setup %patch -p1 %patch1 -p1 %build make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" %install install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
4 5

N.T.: distribuci n o N.T.: distribuidor

6. Construyendo paquetes RPM

install -m 644 -o 0 -g 0 eject.1 /usr/man/man1 %files %doc README COPYING ChangeLog /usr/bin/eject /usr/man/man1/eject.1

6.3 La Cabecera
La cabecera tiene unos cuantos campos est ndar que usted necesita rellenar. Tambi n hay unas cuantas advertencias. a e Los campos deben ser rellenados tal como sigue:
 Summary: Descripci n en una s la lnea del paquete. o o  Name: La cadena que vaya a servir de nombre para el chero rpm.  Version: La cadena que vaya a ser el n mero de versi n para el chero rpm. u o  Release: El n mero de publicaci n para un paquete dentro de un mismo n mero de versi n (ej.: si crea un u o u o paquete y lo encuentra ligeramente defectuoso y necesita generarlo de nuevo, el siguiente paquete debera tener 2 como n mero de publicaci n). u o  Icon: El nombre del icono que podr n usar interfaces de instalaci n alto nivel (como Red Hat glint). a o Debe ser un chero .gif y estar situado en el directorio SOURCES.  Source: Esta lnea apunta a la localizaci n HOME del chero de fuentes original. Se usa si alguna vez quiere o tener los fuentes de nuevo o chequear para nuevas versiones. Precauci n: el nombre del chero en esta lnea o DEBE coincidir con el nombre que tiene tal chero en su sistema (ej.: no se haga con el chero fuente y le cambie el nombre). Puede especicar m s de un chero fuente de esta forma: a
Source0: blah-0.tar.gz Source1: blah-1.tar.gz Source2: fooblah.tar.gz

Estos cheros deben residir en el directorio SOURCES. (La estructura de directorios es discutida en una secci n o posterior, El Arbol de Directorios de las Fuentes, 6.9.1 ()).
 Patch: El lugar donde podr n encontrarse los parches si los necesita de nuevo. Precauci n: el nombre debe a o coincidir con el de SUS propios parches. Puede especicar m s de un chero de parches de esta forma: a
Patch0: blah-0.patch Patch1: blah-1.patch Patch2: fooblah.patch

Estos cheros deben residir en el directorio SOURCES.


 Copyright: Hace referencia al modelo de copyright al que se acoje el paquete. Puede tratarse de algo al estilo de GPL, BSD, MIT, public domain6 , distributable7 o commercial8 .  BuildRoot: Hace referencia a un directorio que simular el raz (/) para la construcci n e instalaci n de un a o o nuevo paquete. Puede usarlo para probar su paquete antes de instalarlo en su m quina. a
6 7

N.T.: dominio p blico u N.T.: distribuible 8 N.T.: comercial

6. Construyendo paquetes RPM

 Group: Informa a un programa de instalaci n de alto nivel (como Red Hat glint) d nde situar este paquete o o en particular dentro de la jerarqua de rpm. Actualmente, esta jerarqua viene a ser:
Applications Communications Editors Emacs Engineering Spreadsheets Databases Graphics Networking Mail Math News Publishing TeX Base Kernel Utilities Archiving Console File System Terminal Text Daemons Documentation X11 XFree86 Servers Applications Graphics Networking Games Strategy Video Amusements Utilities Libraries Window Managers Libraries Networking Admin Daemons News Utilities Development Debuggers Libraries Libc Languages Fortran Tcl Building (aplicaciones) (comunicaciones) (editores) (Emacs) (ingenieria) (hojas de calculo) (bases de datos) (graficos) (redes de comunicaciones) (correo smtp) (matematicas) (noticias nntp) (edicion) (TeX) (basico) (nucleo) (utilidades) (archivo) (consola) (ficheros) (sistema) (terminales) (texto) (demonios) (documentacion) (X11) (XFree86) (servidores) (aplicaciones) (graficos) (redes de comunicaciones) (juegos) (estrategia) (video juegos) (entretenimientos) (utilidades) (librerias) (gestores de ventana) (librerias) (redes de comunicaciones) (administracion) (demonios) (noticias nntp) (utilidades) (desarrollo) (depuradores) (librerias) (libreria C) (lenguajes) (fortran) (tcl) (Compilacion)

6. Construyendo paquetes RPM

10

Version Control Tools Shells Games

(control de versiones) (utiles) (interpretes de comandos) (juegos)

 %description En realidad no es un elemento de la cabecera, pero debe ser descrito junto a sus otras partes. Necesita una etiqueta de descripci n por cada paquete o subpaquete. Se trata de un campo multilnea que debe o ser usado para proporcionar una descripci n comprensible del paquete. o

6.4 %prep
Esta es la segunda secci n del chero spec. Se usa para tener las fuentas listas para compilar. Aqu necesita hacer todo o lo necesario para obtener los fuentes parcheadas y conguradas para ejecutar un make con ellas. Una cosa a se alar: Cada una de estas secciones es s lo un lugar para ejecutar guiones de int rprete de comandos9 . As n o e podr crear un script simple para sh y colocarlo tras la etiqueta %prep para desempaquetar y parchear sus fuentes. a En cualquier caso, hemos creado unas macros para ayudar en esto. La primera de estas macros es %setup. En su forma m s simple (sin par metros en la lnea de comandos), se limita a a a desempaquetar los fuentes y cambiar el directorio actual al de los fuentes. Puede tener alguna de las siguientes opciones:  -n nombre asignar el nombre del directorio en construcci n. Por defecto es $NAME-$VERSION. Otras poa o Ng, o cualquiera que use el chero tar principal. (Apercbese sibilidades incluyen $NAME, $fNAMEg$fVERSIO de que estas variables $ no son variables reales dentro del chero spec. S lo se usan aqu en lugar de un o nombre ejemplo. Necesitar usar el nombre real y la versi n de su paquete, no una variable). a o
 -c crear y cambiar al directorio nombrado antes de desempaquetar con tar. a a  -b # desempaquetar con tar el chero fuente # antes de cambiar al directorio (y esto no tiene sentido con a -c, as que no lo haga). S lo es util cuando se usan varios archivos fuente. o  -a # desempaquetar el chero fuente # despu s de cambiar al directorio. a e  -T Este par metro anula la acci n por defecto de desempaquetar el chero fuente y requiere a o -b 0 o -a 0 para desempaquetar el chero fuente principal. Necesitar esto cuando hayan fuentes secundaa rias.

 -D No borra el directorio antes de desempaquetar. S lo resulta util cuando tenga m s de una macro de cono a guraci n. Debera ser usado solamente en macros de conguraci n despu s de la primera (pero nunca en la o o e primera). La siguiente de las macros disponibles es %patch. Esta macro ayuda a automatizar el proceso de aplicaci n de o parches a los fuentes. Necesita de varios par metros, listadas a continuaci n: a o
 # aplicar el parche Patch#. a  -p # especica el n mero de directorios a evitar por el comando patch(1). u  -P La acci n por defecto es aplicar Patch (o Patch0). Este par metro inhibe dicha acci n y requiere un o a o 0 para tener desempaquetado el chero fuente principal. Esta opci n resulta util en una segunda (o posterior) o macro %patch que requiera par metros distintos a la primera macro. a  Tambi n puede hacer %patch# en lugar de hacer el comando real: %patch # -P e
9

N.T.: shell scripts en el original.

6. Construyendo paquetes RPM

11

Estas deberan ser todas las macros que necesite. En cuanto las tenga claras, podr crear cualquier otra conguraci n a o que necesite mediante guiones sh. Todo lo que incluya hasta la macro %build (discutida en la siguiente secci n) es o ejecutado va sh. Busque en el ejemplo anterior el tipo de cosas que puede querer incluir all.

6.5 %build
En realidad no hay ninguna macro en esta secci n. Solamente debe incluir todos los comandos que necesitara para o construir y/o compilar el software una vez que haya desempaquetado y parcheado los fuentes, y se haya movido al directorio correcto. Es pues otra serie de comandos pasados a sh, as que cualquier comando aceptable por sh podr a ir aqu (incluidos los comentarios). El directorio actual es reajustado en cada una de estas secciones al de mayor nivel en el directorio de fuentes, as que t ngalo en cuenta. Puede moverse a trav s de los subdirectorios si resultase e e necesario.

6.6 %install
En realidad no hay ninguna macro en esta secci n. B sicamente debe incluir aqu cualquier comando necesario para o a instalar. Si el paquete a construir tiene disponible un comando make install, incl yalo aqu. Si no, o bien puede u parchear el chero Makefile y a adirle la funcionalidad make install e incluir dicha sentencia en esta secci n n o o bien instalarlo a mano mediante comandos sh. Puede considerar su directorio actual como el directorio superior del directorio de fuentes.

6.7 Guiones opcionales pre y post Install/Uninstall


Puede incluir guiones que seran ejecutados antes y despu s de la instalaci n o desinstalaci n de paquetes binarios. e o o Una raz n importante para esto es hacer cosas como ejecutar ldconfig tras la instalaci n o eliminar paquetes que o o contienen libreras compartidas. Las macros para cada uno de los guiones son:
 %pre es la macro para los guiones pre-instalaci n. o  %post es la macro para los guiones post-instalaci n. o  %preun es la macro para los guiones pre-desinstalaci n. o  %postun es la macro para los guiones post-desinstalaci n. o

Los contenidos de estas secciones deben ser solamente guiones sh, luego no resulta necesaria la lnea #!/bin/sh.

6.8 %files
Esta es la secci n donde debe listar los cheros del paquete binario. RPM no tiene forma de saber qu cheros binarios o e se han instalado tras ejecutar make install. NO hay forma de saberlo. Algunos han sugerido ejecutar un comando find antes y despu s de la instalaci n del paquete. En un sistema e o multiusuario, esto es inaceptable ya que pueden crearse otros cheros durante la construcci n del paquete que no o tienen nada que ver con el mismo. Tambi n hay algunas macros disponibles para hacer cosas especiales. Son las listadas a continuaci n: e o
 %doc se usa para se alar los cheros de documentaci n del paquete fuente que desea que sean instalan o dos en una instalaci n binaria. La documentaci n ser instalada en /usr/doc/$NOMBRE-$VERSINo o a O N. La lista podr incluir varios cheros en una s la lnea o puede listarlos de forma separada $PUBLICACIO a o con una macro para cada uno de ellos.

6. Construyendo paquetes RPM

12

 %config se usa para se alar los cheros de conguraci n en un paquete. Ficheros as pueden ser sendn o mail.cf, passwd, etc. Si posteriormente desinstala un paquete que incluye cheros de conguraci n, todos o los cheros sin modicar ser n borrados y todos los cheros modicados ser n movidos a su nombre antiguo a a con el sujo .rpmsave a adido a su nombre. Tambi n puede incluir m ltiples cheros con esta macro. n e u

 %dir se ala a un unico directorio en la lista como propiedad de un paquete. Por defecto, si incluye en la lista n un nombre de directorio SIN una macro %dir, TODO el contenido de ese directorio es incluido en la lista de cheros y posteriormente instalado como parte del paquete.
 %files -f `nombredeficherob le permitir tener la lista de cheros contenida en un chero situado en a el directorio de las fuentes. Resulta util en los casos en los que un paquete puede crear su propia lista de cheros por s mismo. En ese caso s lo tendr que incluir el nombre de ese chero aqu y no necesitar especicar nada o a a m s. a

La mayor precacuci n que debe tener en cuenta en la lista de cheros es la inclusi n de directorios. Si por accidente o o incluye /usr/bin, su paquete binario contendr todos los cheros contenidos en el directorio /usr/bin en su a sistema.

6.9 Construcci n o
6.9.1 El Arbol de Directorios de los Fuentes

Lo primero que necesita es un arbol de directorios de compilaci n congurado de forma apropiada. Esto se puede o hacer mediante el chero /etc/rpmrc. La mayora de la gente s lo usar /usr/src. o a Puede que necesite crear los siguientes directorios para organizar un arbol de construcci n: o
 BUILD es el directorio donde RPM lleva a cabo toda la construcci n. No tiene que llevar a cabo su prueba de o construcci n en ning n sitio en particular; aqu es donde RPM llevar a cabo la compilaci n y empaquetamiento. o u a o  SOURCES es el directorio donde debe situar los cheros fuente originales y los correspondientes parches. Es donde RPM buscar por defecto. a  SPECS es el directorio donde deben ir situados los cheros spec.  RPMS es donde RPM dejar los paquetes RPM binarios una vez construidos. a  SRPMS es donde RPM dejar los paquetes RPM fuentes. a

6.9.2

Prueba de construcci n o

Lo primero que querr hacer es asegurarse que los fuentes se construyen adecuadamente sin usar RPM. Para ello, a desempaquete los fuentes, sit ese en el directorio $NAME.orig. De nuevo desempaquete los fuentes. Use estos para u compilar. Vaya al directorio de los fuentes y siga las instrucciones para construirlo. Si necesita editar algo, necesitar a un parche. Una vez que lo tenga compilado, limpie el directorio fuentes. Aseg rese que borra todos los cheros creados por alg n gui n de conguraci n. Haga entonces un cd hacia arriba, u u o o al directorio paterno. Deber hacer algo como: a
diff -uNr nombredirectorio.orig nombredirectorio > ../SOURCES/nombredirectoriolinux.patch

Lo que crear un parche que podr usar en su chero spec. Advierta que el linux que aparece en el nombre del a a parche es s lo un identicador. Usted probablemente querr usar algo m s descriptivo como cong o bugs para o a a describir el porqu del parche. Tambi n es buena idea examinar el chero parche que ha creado antes de usarlo para e e asegurarse de que no se han incluido binarios por error.

6. Construyendo paquetes RPM

13

6.9.3

Creaci n de la Lista de Ficheros o

Ahora que tiene los fuentes listos para construir y sabe c mo hacerlo, constr yalo e inst lelo. Examine la salida de la o u a secuencia de instalaci n y construya su lista de cheros a partir de ah para incluirla en el chero spec. Normalmente o nosotros construimos el chero spec en paralelo a todos estos pasos. Usted puede crear uno inicial y rellenar las partes sencillas e ir rellenando el resto conforme vaya completando los diferentes pasos. 6.9.4 Construyendo el paquete con RPM

Una vez que tenga su chero spec, est listo para intentar construir su paquete. La forma m s util de hacerlo es con un a a comando como el siguiente:
rpm -ba foobar-1.0.spec

Hay otras opciones utiles con el par metro -b tales como: a


 p obliga a ejecutar solamente la secci n prep del chero spec. o  l efect a algunos chequeos en %files. u

 c ejecuta la secci n %prep y compila. Resulta util cuando no est seguro de si sus fuentes compilan compleo a tamente. Puede parecer in til porque usted tal vez quiera jugar solamente con los fuentes hasta que compilen y u usar entonces RPM, pero una vez que se haya acostumbrado a usar RPM, encontrar ocasiones en las que podr a a usarla.
 i ejecuta las secciones prep, compile e install.  b ejecuta las secciones prep, compile e install y construye el paquete binario.  a ejecuta las secciones prep, compile e install y construye los paquetes binario y fuentes.

Hay varios modicadores para el par metro -b. Son los siguientes: a
 --short-circuit El proceso de construcci n comenzar directamente por la fase especicada, salt ndose o a a las previas a la indicada. (S lo puede ser empleado en conjunci n con c e i). o o

 --clean elimina el arbol de construcci n una vez que ha concluido. o


 --keep-temps mantendr todos los cheros temporales y los guiones que estuvieran en /tmp. Podr saber a a qu cheros fueron creados all usando el par metro -v. e a  --test No lleva a cabo ninguna fase realmente, pero mantiene todos los cheros temporales.

6.10 Prob ndolo a


Una vez que tenga los paquetes rpm binario y fuentes, necesitar probarlos. La mejor forma y la m s sencilla es usar a a para el test una m quina completamente diferente de la que us para la construcci n. Despu s de todo, ha hecho un a o o e mont n de make install en su m quina por lo que debera haber quedado instalado de forma aceptable. o a Puede ejecutar un rpm -u nombredepaquete al paquete a probar, pero puede ser decepcionante porque en la construcci n del paquete usted hizo un make install. Si se dej algo fuera de la lista de cheros, no ser deo o a sinstalado. Reinstale entonces el paquete binario y su sistema estar completo de nuevo, aunque no el paquete rpm. a Aseg rese y tenga en mente que s lo porque usted hace rpm -ba package; la mayora de la gente instalar su u o a paquete s lo con rpm -i package. o Aseg rese tambi n de que no hace nada en las secciones build o install que necesite hacerse cuando los binarios u e se instalan por s mismos.

7. Construcci n multi-arquitectura de paquetes RPM o

14

6.11 Qu hacer con los nuevos paquetes RPM? e


Una vez que ha hecho su propio RPM de algo (asumiendo que no ha sido empaquetado en RPM con anterioridad), puede contribuir con su trabajo a otras personas (asumiendo igualmente que el paquete en RPM es libremente distribuible). Para hacerlo, puede querer subirlo a ftp.redhat.com.

6.12 Y ahora qu ? e
Por favor mire las secciones anteriores sobre pruebas y qu hacer con los nuevos RPM. Queremos todos los paquetes e RPM disponibles que podamos conseguir, y queremos que est n correctamente empaquetados. Por favor, t mese el e o tiempo de probarlos adecuadamente y de subirlos para el benecio de todos. Tambi n, por favor aseg rese de que no est haciendo llegar solamente software de libre disposici n. Software e u a o 10 comercial y shareware no deberan ser subidos a menos que est claramente permitido en alguna cl usula de su e a licencia. Esto incluye el software de Netscape, ssh, pgp, etc.

Construcci n multi-arquitectura de paquetes RPM o

Ahora puede usarse RPM para construir paquetes para Intel i386, Digital Alpha ejecutando Linux y Sparc. Tambi n e se ha informado de su funcionamiento en estaciones de trabajo SGI y HP. Hay varias caractersticas que hacen que la construcci n de paquetes para todas las plataformas sea f cil. La primera de estas es la directiva optflags del o a chero /etc/rpmrc. Puede usarse para asignar las opciones usadas durante la construcci n del software con valores o especcos de cada arquitectura. Otras son las macros arch en el chero spec. Pueden usarse para diferentes cosas, en funci n de la arquitectura para la que se est construyendo. Otra m s, es la directiva Exclude de la cabecera. o a a

7.1 Ejemplo de chero spec


El siguiente es parte del chero spec para el paquete fileutils. Est congurado para compilar en Alpha e Intel. a
Summary: GNU File Utilities Name: fileutils Version: 3.16 Release: 1 Copyright: GPL Group: Utilities/File Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz Source1: DIR_COLORS Patch: fileutils-3.16-mktime.patch %description These are the GNU file management utilities. to copy, move, list, etc, files.

It includes programs

The ls program in this package now incorporates color ls! %prep %setup %ifarch alpha
10

N.T.: Probar antes de comprar

7. Construcci n multi-arquitectura de paquetes RPM o

15

%patch -p1 autoconf %endif %build configure --prefix=/usr --exec-prefix=/ make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s %install rm -f /usr/info/fileutils* make install gzip -9nf /usr/info/fileutils* . . .

7.2 Optflags
En este ejemplo puede ver c mo se usa la directiva optflags desde el chero /etc/rpmrc. En funci n de o o la arquitectura para la que est construyendo, el valor adecuado lo proporciona RPM OPT FLAGS. Debe parchear el a chero Makefile de su paquete para usar esta variable en lugar de las directivas normales que puede usar (como -m486 y -O2). Tendr una mejor perspectiva de lo que necesita hacer instalando este paquete de fuentes, desempaa quetando el chero tar con los fuentes y examinando el chero Makefile. Examine el parche para el Makefile y compruebe qu cambios son necesarios realizar. e

7.3 Macros
La macro %ifarch es muy importante para todo esto. La mayora de las veces necesitar hacer un parche o dos a especcos para una s la arquitectura. En ese caso, RPM le permitir aplicar ese parche s lo para una arquitectura. o a o En el ejemplo anterior, fileutils tiene un parche para m quinas de 64 bits. Obviamente, s lo tiene aplicaci n en a o o Alpha, por el momento. Entonces, a adimos una macro %ifarch al parche de 64 tal como: n
%ifarch axp %patch1 -p1 %endif

Esto asegurar que el parche no es aplicado en cualquier arquitectura excepto en Alpha. a

7.4 Excluyendo arquitectura de los paquetes.


A la vez que puede tener fuentes RPM en un s lo directorio para todas las plataformas, hemos implementado la o posibilidad de excluir paquetes para que no sean construidos en ciertas arquitecturas. Debido a esto, puede hacer cosas como:
rpm --rebuild /usr/src/SRPMS/*.rpm

y conseguir construir los paquetes adecuados. Si todava no ha portado una aplicaci n a una determinada plataforma, o todo lo que tiene que hacer es a adir una lnea como: n
ExcludeArch: axp

8. Copyright

16

a la cabecera del chero spec del paquete de fuentes. Reconstruya entonces el paquete sobre la plataforma para la que est preparado. Como resultado tendr disponible un paquete compilable sobre Intel pero que es f cilmente omitible a a a sobre Alpha.

7.5 Acabando
Usar RPM para crear paquetes para m ltiples arquitecturas es generalmente m s sencillo de hacer que conseguir que u a el paquete compile por s mismo en todos los casos. Como siempre, la mejor ayuda disponible cuando uno se queda bloqueado al construir un paquete RPM es examinar un paquete de fuentes similar.

Copyright

Este documento y sus contenidos est n protegidos por las leyes de propiedad intelectual. Se permite la redistribuci n a o de este documento siempre que sus contenidos permanezcan intactos y sin cambios. En otras palabras, solamente lo puede reformatear, reimprimir o redistribuir.

Anexo: El INSFLUG

El INSFLUG forma parte del grupo internacional Linux Documentation Project, encarg ndose de las traducciones al a castellano de los Howtos (Comos), as como la producci n de documentos originales en aquellos casos en los que no o existe an logo en ingl s. a e En el INSFLUG se orienta preferentemente a la traducci n de documentos breves, como los COMOs y PUFs o (Preguntas de Uso Frecuente, las FAQs. :) ), etc. Dirjase a la sede del INSFLUG para m s informaci n al respecto. a o En la sede del INSFLUG encontrar siempre las ultimas versiones de las traducciones: www.insflug.org. a Aseg rese de comprobar cu l es la ultima versi n disponible en el Insug antes de bajar un documento de un seru a o vidor r plica. e Se proporciona tambi n una lista de los servidores r plica (mirror) del Insug m s cercanos a Vd., e informaci n e e a o relativa a otros recursos en castellano. Francisco Jos Montilla, pacopepe@insflug.org. e

También podría gustarte