-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sunday 01 August 2004 11:21, Miquel A. Noguera wrote:
Hola a todos.
Por lo que yo he deducido, para hacernos un rpm propio, lo primero que necesitamos es instalarnos el paquete rpm-devel y también el gcc, el make... en pocas palabras, un entorno de compilación en c operativo, ¿olvido algo?
Creo que no.
También necesitaremos un fichero .spec, que no es otra cosa que un pequeño listado con nuestros datos, la descripción del nuevo rpm y de los ficheros que queremos meter en él ¿cierto?
Correcto. Es el núcleo de un paquete rpm. Ahí esta todo: las descripciones, las dependencias, los ficheros que lo componen...
He leido que lo más fácil es empezar "cogiendo prestado" un fichero .spec de un rpm que tengamos a mano y modificandolo para nuestras necesidades, ¿no?. Pues bien, para empezar, ¿cómo hago para extraer un .spec?
Utiliza el siguiente scrip bash (que yo llamo rpmrip) para destripar un src.rpm (fíjate que es un fuente rpm). - -------- #! /bin/sh # # Script para destripar un funete rpm # Uso # rpmrip nombre_del_rpm rpm2cpio $1 | cpio -i -d - --------- En el directorio que hayas ejecutado el script tendras descompuesto todas las fuentes necesarias (por ejemplo 'tar.gz'), los parches ... y el fichero 'spec'.
Se que también existe el krpmbuilder, que creo que facilita la labor, pero todavía me faltan conocimientos para entender su funcionamiento, lo siento :-(
Puede servir para cosas muy sencillitas
Después otra cosa: en las documentaciones consultadas, veo que parten siempre de un código_fuente.tar.gz que debemos tener y compilar, pero, ¿no es posible empaquetar binarios o ficheros de datos directamente?
También es posible. Fíjate que el fichero spec lo que dice en definitiva es y qué ficheros poner y dónde. Lo habitual es que los ficheros a instalar se obtengan a traves de una compilación, pero pueden utilizarse ficheros precompilados, como yo he hecho con el último rpm de azureus (si quieres ver su spec bajate el src.rpm y destrípalo).
Y para finalizar (por ahora): he visto que todo esto hay que colocarlo en determinados directorios (SOURCE, SEPCS), pero no acabo de ver claro si esos directorios cuelgan de /usr/src o si pueden estar en el home del usuario o si eso simplemente es a gusto del consumidor.
Es una cosa propia del RPM. Cada distribución utiliza sus propias definiciones y macros. En el caso de suse puedes verlas en los ficheros /usr/lib/rpm/macros /usr/lib/rpm/suse_macros ahí viene la localización de los ficheros. Los directorios especiales SPEC -> Donde se ponen los spec RPMS -> donde se colocan los rpm binarios compilados SRPMS -> donde se colocan los src.rpm que han sido construidos SOURCES -> donde deben ponerse todos las fuentes y parches a utilizar para construir el rpm BUILD -> donde se descomprimen las fuentes y se parchean si es preciso, y donde realmente tiene lugar la compilación. En suse todos esos ficheros cuelgan de /usr/src/packages IDEA FINAL BASICA: En el proceso de construcción de un RPM se trata de dejar en un directorio, que se designa con la macro ${RPM_BUILD_ROOT} (y que se suele definir al principio de los ficheros spec con BuildRoot: ) la estructura de directorios y ficheros que despues se instalará sobre el directorio raiz '/' de nuestro sistema, simplemente. Por ejemplo, mientras construyo el rpm de gambas, se crea en el directorio temporal '/var/tmp' un directorio 'gambas-0.95-build' y en él se van instalando todos los ficheros, de modo que lo que hay en /var/tmp/gambas-0.95-build/lo_que_sea se instalará, cuando instalemos el RPM, en el path '/lo_que_sea' de nuestro sistema. Quedan muchos detalles de macros a utilizar en el proceso de instalacion de fuentes, compilación e instalación en el buildRoot, pero eso se puede ir viendo poco a poco.
Saludos desde Ibiza y hasta pronto.
Buen sitio ;). Desde Granada, Guillermo - -- Guillermo Ballester Valor gbv@oxixares.com Ogijares, Granada SPAIN Linux user #117181. See http://counter.li.org/ Public GPG KEY http://www.oxixares.com/~gbv/pubgpg.html -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) iD8DBQFBDL3rOA2UfsyErNQRAhHNAJ4gZ/iVix1t63VsgZkdEUD1FKxYAQCeKsXo IvFzT5MqZuSp0f69GRXfecU= =13WG -----END PGP SIGNATURE-----