Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RPM Como
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
8 9
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
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
Usando RPM
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
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
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
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 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
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.
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.
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
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
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)
10
%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
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.
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.
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.
13
6.9.3
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
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
14
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.
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
It includes programs
The ls program in this package now incorporates color ls! %prep %setup %ifarch alpha
10
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
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