Вы находитесь на странице: 1из 11

-Creando nuestro primer RPM (RHT6)-

Lo primero es instalar los paquetes y herramientas necesarias para poder crear rpms (rpm-build y rpmdevtools):
# yum install rpm-build rpmdevtools -y

Vamos a trabajar con un usuario sin privilegios y comenzamos creando una carpeta en nuestra home que contendr los ficheros que formarn el !":
$ ls -l test-package-1.0/

total 8

-rw-rw-r--. 1 alex alex 2

!ov 10 1"#0$ %&'()&.txt

-rw-rw-r--. 1 alex alex *2 !ov 10 1"#0" test-c+eck

-rwxr--r--. 1 alex alex

0 !ov 10 1"#,8 con-igure

#omo pod$is ver simplemente he creado un fichero de te%to &'("&)t%t y un script en bash llamado *test-chec+,) &l fichero configure es necesario aunque no vayamos a compilar nada de c-digo fuente. si no lo inclu/s os aparecer un error al crear el !":
/var/tmp/rpm-tmp.../us # line ,2# ./con-igure# !o suc+ -ile or directory

error# 0ad exit status -rom /var/tmp/rpm-tmp.../us

12build3

$ touc+ con-igure

$ c+mod 0 $$ con-igure

&sto va a ser todo lo que contendr nuestro !") !ara poder comenzar a crearlo antes debemos crear en nuestra home la estructura de directorios necesaria para la gesti-n de rpms . c-digo fuente. specs. etc) &n lugar de crearlo a mano utilizamos el comando *rpmdev-setuptree, disponible gracias a la instalaci-n de los paquetes del comienzo de la entrada:
$ rpmdev-setuptree

0 ya tenemos la estructura creada:

-Creando nuestro primer RPM (RHT6)$ ls -ltr+ rpmbuild/

total 204

drwxrwxr-x. 2 alex alex $.04 !ov 10 1"#08 %5)6

drwxrwxr-x. 2 alex alex $.04 !ov 10 1"#08 678%9&6

drwxrwxr-x. 2 alex alex $.04 !ov 10 1"#08 65&96

drwxrwxr-x. 2 alex alex $.04 !ov 10 1"#08 6%5)6

drwxrwxr-x. 2 alex alex $.04 !ov 10 1"#08 08:;(

Lo siguiente que debemos hacer es comprimir las sources de nuestro paquete (carpeta test-pac+age1)23) y copiarla o moverla a la carpeta 456 #&4 dentro de rpmbuild:
$ tar -c.v- test-package-1.0.tar.g. test-package-1.0/

test-package-1.0/

test-package-1.0/%&'()&.txt

test-package-1.0/test-c+eck

$ cp -p test-package-1.0.tar.g. rpmbuild/678%9&6/

&l 7ltimo fichero que tenemos que crear para poder construir el rpm es el fichero)spec) &ste ficherocontiene toda la informaci-n del paquete rpm: nombre. n7mero de versi-n. arquitectura. descripci-n. dependencias. ordenes de ejecuci-n para la instalaci-n8 no es necesario crearlo desde cero) !odemos ejecutar el siguiente comando dentro de la carpeta 456 #&4 para que nos cree uno de muestra:
$ rpmdev-newspec

6keleton spec-ile 1minimal3 +as been created to <newpackage.spec<.

Lo copiamos o renombramos con el nombre de nuestro paquete:

$ cp -p newpackage.spec test-package.spec

-Creando nuestro primer RPM (RHT6)'hora lo editamos a9adiendo los parmetros correspondientes. los ms importantes ser/an: &l nombre del paquete rpm:
!ame# test-package

:7mero de versi-n:
=ersion# 1.0

elease de la distribuci-n (lo dejamos por defecto):


%elease# 12>?dist@

4ummary. simplemente descriptivo) ;ndica el contenido del rpm. no es necesario:


6ummary# 5aAuete de muestra Aue contiene un -ic+ero de texto y un eBecutable

<roup hace referencia al grupo al que pertenece el paquete (definidos en un ="L en el sistema). en nuestro caso no pertenece a ning7n grupo concreto (>ase. 4ystem &nvironment. (atabase8) as/ que ponemos uno gen$rico:
Croup# )iscellaneous

?ambi$n podemos especificar t$rminos de licencia del paquete y 6 L en la que revisarlos:

;icense#

%5) de prueba sin licencia

8%;#

+ttp#//rm-r-.es

5jo con el siguiente parmetro pues s/ que es importante. especifica donde se encuentran las sources (del paquete. en este caso nuestro tar)gz (podr/a ser una url remota). no se especifica rpmbuild3456 #&4 porque es la ruta en la que tienen que estar:

6ource0#

test-package-1.0.tar.g.

&n nuestro caso no hay ninguna dependencia para el paquete !". pero para paquetes complejos puede ser necesario que alg7n paquete e%tra est$ instalado para el funcionamiento correcto. los especificar/amos en este punto:

#0uild%eAuires#

-Creando nuestro primer RPM (RHT6)#%eAuires#

!odemos especificar una descripci-n del paquete que se ver al buscarlo por yum o el comando rpm:
2description

&ste es un paAuete de prueba para el artDculo de +ttp#//rm-r-.es

Los dos comandos siguientes sirven para preparar el c-digo fuente antes de su instalaci-n. en este caso bsicamente descomprimirn el )tar)gz en el directorio rpmbuild3456 #&4:
2prep

2setup -A

&l siguiente apartado sirve para compilar el c-digo fuente (cuando es necesario)) #omo nuestro es muy sencillo y no necesita compilaci-n comentamos las l/neas:
2build

!"

#2con-igure

#make 2>?EsmpEm-lags@

&l siguiente apartado (@install) es en el que se especifican las acciones a realizar cuando instalemos el !") &n nuestro caso bsicamente es crear una nueva carpeta en *3usr3local, y copiar ah/ los ficheros) !or defecto aparece as/:
2install

rm -r- $%5)E08:;(E%77F

make install (&6F(:%G$%5)E08:;(E%77F

Lo que hace es en primera instancia borrar cualquier resto de instalaciones anteriores del mismo paquete y despu$s ejecuta un ma+e si hemos realizado tareas de compilaci-n) Vamos a comentar el ma+e ya que nosotros no compilamos nada:

2install

rm -r- $%5)E08:;(E%77F

-Creando nuestro primer RPM (RHT6)#make install (&6F(:%G$%5)E08:;(E%77F

install -d -m 0 HH /var/tmp/test-package

install -m 0"$$ %&'()&.txt /var/tmp/test-package

install -m 0 HH test-c+eck /var/tmp/test-package

&l comando install -d nos permite crear un directorio e install -m mover ficheros) Lo instalamos en 3var3tmp simplemente porque es un rpm de prueba. lo normal ser/a 3usr3local. 3opt o lo que quisierais) Ainalmente se limpian restos de la instalaci-n:

2clean

rm -r- $%5)E08:;(E%77F

's/ quedar/a nuestro test-pac+age)spec:


!ame# test-package 1.0 1importante Aue la carpeta Aue se +a comprimidoI tenga la sintaxis $>$nameJ$version@3 12>?dist@

=ersion#

%elease#

6ummary# eBecutable

5aAuete de muestra Aue contiene un -ic+ero de texto y un

Croup#

)iscellaneous

;icense#

%5) de prueba sin licencia

8%;#

+ttp#//rm-r-.es

6ource0#

test-package-1.0.tar.g.

0uild%oot#

2>Etmppat+@/2>name@-2>version@-2>release@-root-212>EEidEu@ -n3

-Creando nuestro primer RPM (RHT6)-

#0uild%eAuires#

#%eAuires#

2description

&ste es un paAuete de prueba para el artDculo de +ttp#//rm-r-.es

2prep

2setup -A

2build

#2con-igure

#make 2>?EsmpEm-lags@

2install

rm -r- $%5)E08:;(E%77F

#make install (&6F(:%G$%5)E08:;(E%77F

install -d -m 0 HH /var/tmp/test-package

install -m 0"$$ %&'()&.txt /var/tmp/test-package

install -m 0 HH test-c+eck /var/tmp/test-package

-Creando nuestro primer RPM (RHT6)-

2clean

rm -r- $%5)E08:;(E%77F

2-iles

2de-attr1-IrootIrootI-3

2doc

2c+angelog

&l 7ltimo paso ya es empaquetar todo y crear el !". para ello utilizamos el siguiente comando pasando como argumento el fichero spec) (ebemos esperar un e%it 2 al final para descartar fallos:
$ rpmbuild -ba rpmbuild/678%9&6/test-package.spec

&xecuting12prep3# /bin/s+ -e /var/tmp/rpm-tmp.*a.A-5

J umask 022

J cd /+ome/alex/rpmbuild/08:;(

J cd /+ome/alex/rpmbuild/08:;(

J rm -r- test-package-1.0

J /bin/tar -x- -

J /usr/bin/g.ip -dc /+ome/alex/rpmbuild/678%9&6/test-package-1.0.tar.g.

J 6F'F86G0

J KLK 0 -ne 0 KMK

-Creando nuestro primer RPM (RHT6)J cd test-package-1.0

J /bin/c+mod -%- aJr/IuJwIg-wIo-w .

J exit 0

&xecuting12build3# /bin/s+ -e /var/tmp/rpm-tmp.=ANu(=

J umask 022

J cd /+ome/alex/rpmbuild/08:;(

J cd test-package-1.0

J 9O;'C6GK-72 -g -marc+Gi,8" -mtuneGi"8"K

J export 9O;'C6

J 9//O;'C6GK-72 -g -marc+Gi,8" -mtuneGi"8"K

J export 9//O;'C6

J OO;'C6GK-72 -g -marc+Gi,8" -mtuneGi"8"K

J export OO;'C6

J ./con-igure --+ostGi"8"-pc-linux-gnu --buildGi"8"-pc-linux-gnu --programpre-ixG --pre-ixG/usr --exec-pre-ixG/usr --bindirG/usr/bin --sbindirG/usr/sbin --syscon-dirG/etc --datadirG/usr/s+are --includedirG/usr/include --libdirG/usr/lib --libexecdirG/usr/libexec --localstatedirG/var --s+aredstatedirG/var/lib --mandirG/usr/s+are/man --in-odirG/usr/s+are/in-o

J exit 0

&xecuting12install3# /bin/s+ -e /var/tmp/rpm-tmp.8$egr2

J umask 022

J cd /+ome/alex/rpmbuild/08:;(

J cd test-package-1.0

-Creando nuestro primer RPM (RHT6)J rm -r- /+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"

J install -d -m 0 HH /var/tmp/test-package

J install -m 0"$$ %&'()&.txt /var/tmp/test-package

J install -m 0 HH test-c+eck /var/tmp/test-package

J /usr/lib/rpm/c+eck-rpat+s /usr/lib/rpm/c+eck-buildroot

-ind# P/+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"K# !o suc+ -ile or directory

J /usr/lib/rpm/brp-compress

/usr/lib/rpm/brp-compress# line 8# cd# /+ome/alex/rpmbuild/08:;(%77F/testpackage-1.0-1.el".i,8"# !o suc+ -ile or directory

J /usr/lib/rpm/brp-strip

-ind# P/+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"K# !o suc+ -ile or directory

J /usr/lib/rpm/brp-strip-static-arc+ive

-ind# P/+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"K# !o suc+ -ile or directory

J /usr/lib/rpm/brp-strip-comment-note

-ind# P/+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"K# !o suc+ -ile or directory

5rocessing -iles# test-package-1.0-1.el".i,8"

9+ecking -or unpackaged -ile1s3# /usr/lib/rpm/c+eck--iles /+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"

warning# 9ould not canonicali.e +ostname# 9ent76

Qrote# /+ome/alex/rpmbuild/6%5)6/test-package-1.0-1.el".src.rpm

-Creando nuestro primer RPM (RHT6)Qrote# /+ome/alex/rpmbuild/%5)6/i,8"/test-package-1.0-1.el".i,8".rpm

&xecuting12clean3# /bin/s+ -e /var/tmp/rpm-tmp.by!c=u

J umask 022

J cd /+ome/alex/rpmbuild/08:;(

J cd test-package-1.0

J rm -r- /+ome/alex/rpmbuild/08:;(%77F/test-package-1.0-1.el".i,8"

J exit 0

Vemos que todo ha ido bien as/ que ya deber/amos tener nuestro nuevo !" en la carpeta !"4:
$ ls -l rpmbuild/%5)6/i,8"/test-package-1.0-1.el".i,8".rpm

-rw-rw-r--. 1 1.el".i,8".rpm

alex

alex

1,"H

!ov

10

1"#$,

rpmbuild/%5)6/i,8"/test-package-1.0-

0 el !" de las sources:

$ ls -l rpmbuild/6%5)6/test-package-1.0-1.el".src.rpm

-rw-rw-r--. 1 1.el".src.rpm

alex

alex

2$H8

!ov

10

1"#$,

rpmbuild/6%5)6/test-package-1.0-

Lo podemos instalar como cualquier otro rpm:


# rpm -iv+ rpmbuild/%5)6/i,8"/test-package-1.0-1.el".i,8".rpm

5reparing...

########################################### L1002M

1#test-package

########################################### L1002M

Vemos que se ha instalado correctamente:

-Creando nuestro primer RPM (RHT6)# ls -l /var/tmp/test-package/

total 8

-rw-r--r--. 1 alex alex 2

!ov 10 1"#$, %&'()&.txt

-rwxr-xr-x. 1 alex alex *2 !ov 10 1"#$, test-c+eck

0 podemos ver tambi$n toda la informaci-n del paquete rpm que indicamos en el fichero spec:
# rpm -Ai test-package

!ame

# test-package

%elocations# 1not relocatable3

=ersion

# 1.0

=endor# 1none3

%elease

# 1.el"

0uild (ate#

:nstall (ate# 6at 10 !ov 2012 0$#$H#12 5) 9&F

0uild Rost# 9ent76

Croup 1.el".src.rpm

# )iscellaneous

6ource %5)# test-package-1.0-

6i.e

# 0

;icense# %5) de prueba sin licencia

6ignature

# 1none3

8%;

# +ttp#//rm-r-.es

6ummary

# 5aAuete de muestra Aue contiene un -ic+ero de texto y un eBecutable

(escription #

&ste es un paAuete de prueba para el artDculo de +ttp#//rm-r-.es

&ste es el modo de crear un paquete rpm muy bsico. a partir de aqu/ es cuesti-n de buscar ms informaci-n para poder tener vuestras aplicaciones empaquetadas B)

Вам также может понравиться