Академический Документы
Профессиональный Документы
Культура Документы
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
#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
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
total 204
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
$ 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
<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
;icense#
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#
!odemos especificar una descripci-n del paquete que se ver al buscarlo por yum o el comando rpm:
2description
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
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
install -d -m 0 HH /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
=ersion#
%elease#
6ummary# eBecutable
Croup#
)iscellaneous
;icense#
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
#0uild%eAuires#
#%eAuires#
2description
2prep
2setup -A
2build
#2con-igure
#make 2>?EsmpEm-lags@
2install
rm -r- $%5)E08:;(E%77F
install -d -m 0 HH /var/tmp/test-package
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
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 6F'F86G0
J exit 0
J umask 022
J cd /+ome/alex/rpmbuild/08:;(
J cd test-package-1.0
J export 9O;'C6
J export 9//O;'C6
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
J umask 022
J cd /+ome/alex/rpmbuild/08:;(
J cd test-package-1.0
J install -d -m 0 HH /var/tmp/test-package
J /usr/lib/rpm/c+eck-rpat+s /usr/lib/rpm/c+eck-buildroot
J /usr/lib/rpm/brp-compress
J /usr/lib/rpm/brp-strip
J /usr/lib/rpm/brp-strip-static-arc+ive
J /usr/lib/rpm/brp-strip-comment-note
Qrote# /+ome/alex/rpmbuild/6%5)6/test-package-1.0-1.el".src.rpm
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-
$ 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-
5reparing...
########################################### L1002M
1#test-package
########################################### L1002M
total 8
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
=ersion
# 1.0
=endor# 1none3
%elease
# 1.el"
0uild (ate#
Croup 1.el".src.rpm
# )iscellaneous
6i.e
# 0
6ignature
# 1none3
8%;
# +ttp#//rm-r-.es
6ummary
(escription #
&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)