jueves, 4 de junio de 2009

Manual rpm

Manual (mini) RPM

Estructura de directorios

RPM requires a set of directories in which to perform the build. RPM requiere un conjunto de directorios en el que para llevar a cabo la construcción. The normal directory layout consists of a single top-level directory (the default name is /usr/src/redhat ), with five subdirectories. El diseño normal de directorio se compone de un único directorio de nivel superior (el nombre predeterminado es / usr / src / redhat), con cinco subdirectorios. The five subdirectories and their functions are: Los cinco subdirectorios y sus funciones son las siguientes:

* /usr/src/redhat/SOURCES - Contains the original sources, patches, and icon files. / usr / src / redhat / SOURCES - Contiene las fuentes originales, revisiones, y archivos de iconos.
* /usr/src/redhat/SPECS - Contains the spec files used to control the build process. / usr / src / redhat / SPECS - Contiene la especificación de archivos utilizados para controlar el proceso de construcción.
* /usr/src/redhat/BUILD - The directory in which the sources are unpacked, and the software built. / usr / src / redhat / BUILD - El directorio en el que las fuentes son desempaquetados, y el software incorporado.
* /usr/src/redhat/RPMS - Contains the binary package files created by the build process. / usr / src / redhat / RPMS - Contiene el paquete binario los archivos creados por el proceso de construcción.
* /usr/src/redhat/SRPMS - Contains the source package files created by the build process. / usr / src / redhat / SRPMS - Contiene la fuente de los archivos de un paquete creado por el proceso de construcción.

Unpacking, modifying, and rebuilding an RPM Desembalaje, modificar y reconstruir un RPM

At this point, I'll explain the process quickly for those who just want the command syntax, and below I'll explain the process in more depth. En este punto, voy a explicar el proceso rápido para aquellos que sólo desean la sintaxis del comando, y más adelante voy a explicar el proceso en mayor profundidad. To begin, you will need an rpm package. Para empezar, necesitará un paquete rpm. As an example, I'll be using ddd-3.3-1.src.rpm . Como ejemplo, voy a estar usando ddd-3,3-1.src.rpm.

* First, we unpack the source rpm with the following command: En primer lugar, se expandirá el rpm fuente con el siguiente comando:

rpm -Uvh ddd-3.3-1.src.rpm rpm-Uvh ddd-3,3-1.src.rpm

The added flags (-Uvh) unpack the source rpm and place its files under the /usr/src/redhat/ directory structure. El añadido banderas (-Uvh) descomprimir el rpm fuente y colocar sus archivos bajo el directorio / usr / src / redhat / estructura de directorios.

* The previous command placed three files ( ddd.desktop, ddd-3.3.tar.gz, ddd-3.3-pics.tar.gz ) into the /usr/src/redhat/SOURCES directory. El comando anterior colocado tres archivos (ddd.desktop, ddd-3.3.tar.gz, ddd-3,3-pics.tar.gz) en el directorio / usr / src / redhat / SOURCES directorio. These files are the original sources. Estos archivos son las fuentes originales.

o These files can be untarred/gzipped and modified. Estos archivos pueden ser untarred / gzip y modificados. Once all modifications are complete retar/gzip the files. Una vez que todas las modificaciones son completas retar / gzip de los archivos.
o Syntax for untarring/gzipping a file: Sintaxis para untarring / gzipping un archivo:
+ tar -xzvvf ddd-3.3.tar.gz tar-xzvvf ddd-3.3.tar.gz
o Syntax for tarring/gzipping an archive: Sintaxis para tarring / gzipping un archivo:
+ tar -cvvf ddd-3.3.tar ddd-3.3/ tar-cvvf 3.3.tar ddd-ddd-3.3 /
+ gzip ddd-3.3.tar gzip-ddd 3.3.tar


* While unpacking the source rpm, a file was also placed in the /usr/src/redhat/SPECS directory. Si bien la fuente de desempaquetar rpm, fue también un archivo en el directorio / usr / src / redhat / SPECS directorio. This file ( ddd.spec ) is refered to as the spec file. Este archivo (ddd.spec) se le conoce como el archivo spec. The spec file contains all of the information we need in order to direct RPM in the build process for this application. The first section of the spec file contains information about package being built. El archivo contiene todas las especificaciones de la información que necesitamos para orientar RPM en el proceso de construcción para esta aplicación. La primera sección de la especificación de archivo contiene información sobre el paquete que se está construyendo. If modifications are made to the application, the release number should be incremented by one. Si se producen modificaciones en la solicitud, el número de versión debería ser incrementado en uno.

* If the modifications to the application were only minor (eg modifying a script) then you can simply repackage the source. Si las modificaciones a la aplicación sólo se menor (por ejemplo, la modificación de un script), entonces usted puede simplemente volver la fuente. First change your working directory to the /usr/src/redhat/SPECS directory. Find the .spec file corresponding to your application and type the following command: En primer lugar cambiar su directorio de trabajo para el directorio / usr / src / redhat / SPECS directorio. Encuentre el. Especificación de archivo correspondiente a su solicitud y escriba el siguiente comando:

o rpm -ba ddd.spec rpm-ba ddd.spec


Example transcript of modifying the memtest rpm Ejemplo de modificar la transcripción memtest rpm
Unpack source RPM: Desempaquete RPM fuente:

rpm -Uvh memtest86-2.6-1medusa.src.rpm rpm-Uvh memtest86-2.6-1medusa.src.rpm

Build from source RPM: Construir desde el código fuente de RPM:

cd /usr/src/redhat/SPECS cd / usr / src / redhat / SPECS
rpm -ba memtest86-2.6.spec rpm-ba memtest86-2.6.spec

Make copy of original source code directories and tree Hacer copia del código fuente original y el árbol de directorios

cd /usr/src/redhat/BUILD cd / usr / src / redhat / BUILD
cp -r memtest86-2.6 memtest86-2.6-orig cp-r memtest86-2.6 memtest86-2.6-orig

Modify source code: Modificar el código fuente:

cd memtest86-2.6/ cd memtest86-2.6 /
[I then edited the file config.h. Note: this edit disabled the serial port output. [A continuación, editar el fichero config.h. Nota: la presente edición de los discapacitados de salida del puerto serie. You will do something different when you modify the source files for whatever change you are making.] Va a hacer algo diferente al modificar los archivos de origen por cualquier cambio que están haciendo.]

Generate a diff file to use as a patch: Generar un archivo de diferencias a su utilización como un parche:

cd /usr/src/redhat/BUILD/ cd / usr / src / redhat / BUILD /
diff -uNr memtest86-2.6-orig/ memtest86-2.6/ > memtest86-2.6-serial.patch diff-unr memtest86-2.6-orig / memtest86-2.6 /> memtest86-2.6-serial.patch

Copy the patch file into the SOURCES directory: Copia el fichero de parche en el directorio de SOURCES:

cp /usr/src/redhat/BUILD/memtest86-2.6-serial.patch /usr/src/redhat/SOURCES cp / usr/src/redhat/BUILD/memtest86-2.6-serial.patch / usr / src / redhat / SOURCES

Edit the spec file (warning - this is the longest part of this description): Editar el archivo spec (aviso - esta es la parte más larga de esta descripción):

cd /usr/src/redhat/SPECS cd / usr / src / redhat / SPECS
[The file to edit is called memtest86-2.6.spec. [Editar el archivo se llama memtest86-2.6.spec. Here is a summary of the changes: Aquí está un resumen de los cambios:
After Source: change Después de Origen: el cambio

Patch0: memtest86-2.6.patch Patch0: memtest86-2.6.patch
Patch1: memtest86-2.6-unsupervised.patch Patch1: memtest86-2.6-unsupervised.patch

to read para leer

Patch0: memtest86-2.6.patch Patch0: memtest86-2.6.patch
Patch1: memtest86-2.6-unsupervised.patch Patch1: memtest86-2.6-unsupervised.patch
Patch2: memtest86-2.6-serial.patch Patch2: memtest86-2.6-serial.patch

Change Cambiar


%setup % de instalación
%patch0 -p1 -b .buildroot % patch0-p1-b. buildroot
%patch1 -p1 p1-patch1%

to read para leer


%setup % de instalación
%patch0 -p1 -b .buildroot % patch0-p1-b. buildroot
%patch1 -p1 p1-patch1%
%patch2 -p1 p1-patch2%

Change Cambiar

Release: 1medusa Edición: 1medusa

to: a:

Release: 2medusa Edición: 2medusa

Add additional lines to the %build section of the SPEC file if needed. Añadir líneas adicionales para la sección% build del SPEC archivo si es necesario. In my case I added: En mi caso he añadido:

cat test.h.save | sed 's/#define MAXPASS 4/#define MAXPASS 144/' > test.h gato test.h.save | sed 's / # define MAXPASS 4 / # define MAXPASS 144 /'> test.h
make hacer
mv -f memtest.bin memtest.bin-week mv-f memtest.bin memtest.bin semanas
make clean make clean

at the appropriate point. en el punto adecuado. This changed the number of iterations of the memtest from 4 to 144, and Esto cambió el número de iteraciones de la memtest de 4 a 144, y
saved the resulting executable in memtest.bin-week. guardado el ejecutable resultante en memtest.bin semana.

I also edited the %install section of the .spec file I added a line reading: También editó el% de la instalación. Archivo spec he añadido una línea de lectura:
cp memtest.bin-week $RPM_BUILD_ROOT/boot/memtest86-week cp memtest.bin semanas $ RPM_BUILD_ROOT/boot/memtest86-week

I also modified the post-installation section of the file. También modificó la sección de post-instalación del archivo. This follows %post. The main change was to modify the script that updateds /etc/lilo.conf, to add extra lines to include this new version of memtest. Esto se desprende% puesto. El principal cambio fue modificar el script que updateds / etc / lilo.conf para añadir líneas adicionales para incluir a esta nueva versión de memtest.

I modified the part of the script that defines the file attributes: He modificado la parte de la secuencia de comandos que define los atributos de archivo:

%defattr(-,root,root) defattr% (-, root, root)
/boot/memtest86 / boot/memtest86
/boot/memtest86-unsupervised / boot/memtest86-unsupervised
/boot/memtest86-week / boot/memtest86-week

Finally, I edited the "Changelog" at the end of the .spec file to put in come comments about what I had done. Por último, editó el "cambios" al final de la. Especificación de archivo para poner en llegar comentarios acerca de lo que había hecho. I added He añadido
%changelog % de cambios
* Sun Dec 2 2001 Bruce Allen * Domingo 2 de diciembre 2001 Bruce Allen
- changed number of unsupervised runs to 144 (one week + 30 min) since without serial IO it is faster. - Sin cambiar el número de carreras a 144 (una semana + 30 min) ya que sin serie IO es más rápido.

END OF EDITING SPEC FILE] FIN DE EDICIÓN SPEC FILE]

Rebuild the SRPM and RPM Reconstruir el SRPM y RPM

cd /usr/src/redhat/SPEC cd / usr / src / redhat / SPEC
rpm -ba memtest86-2.6.spec rpm-ba memtest86-2.6.spec

The new SRPM and RPM should now be tested then checked into the CVS archive. They can be found in: El nuevo SRPM y RPM debe ser probado entonces verificarse en el archivo CVS. Se pueden encontrar en:
/usr/src/redhat/RPM and /usr/src/redhat/SRPM / usr / src / redhat / RPM y / usr / src / redhat / SRPM

No hay comentarios: