Crear paquetes RPM (Redhat)

Ahora vamos a crear paquetes rpm propios .

Vamos crear un paquete rpm del ssl , apache y php que ya teníamos compilado . Vamos a trabajar desde el directorio /usr/src/redhat . Podemos hacer cualquier modificación ( directivas , rutas ) en archivos de configuración antes de crear los paquetes , así ya no tenemos que ir modificando en cada instalación .

Instalar paquetes que pueden ser necesarios :

yum install rpm-build

Deberíamos tener una estructura de directorios dentro de /usr/src/redhat como esta, si no la creamos :

  • BUILD ( Carpeta temporal ).
  • RPMS  ( El paquete final se guarda aqui, hay tantas carpetas como arquitecturas generemos – noarch / x86_64 ).
  • SOURCES (Aquí se mete el fichero de origen comprimido y vacio tar.gz que contenga la carpeta que va a invocar, debe estar vacio si ya esta compilado, o con la fuente si queremos que lo compile el creador de rpm).
  • SPECS  ( Esqueleto del fichero RPM, los ficheros que tiene, etc… ) Contiene fichero .spec
  • SRPMS ( Sources RPM, es un RPM que necesita una reconstrucción en la maquina de destino ).

Lo primero vamos a necesitar un archivo .spec .

Empezamos creando el fichero openssl.spec dentro del directorio SPECS :

touch /usr/src/redhat/SPECS/openssl.spec  

Aqui os podeis descargar los que he creado  :  openssl.spec.tarapache.spec.tar y php5.spec.tar

Algunos términos a tener en cuenta de los archivos .spec

%pre ( órdenes antes de que empiece la instalación )

%post ( órdenes  después de terminar la instalación )

%preun ( órdenes antes de la  desinstalación )

%postun ( órdenes después de la desinstalación )

Vamos a añadir el listado de archivos y de directorios que va a contener el .rpm que vamos a crear .

Para sacar la lista de archivos y directorios uso el comando find :

find /opt/ssl -type d > dirs.ssl

find /opt/ssl -type f > archivos.ssl

Dentro de openssl.spec esta este parámetro %define topdir /opt/ssl , así que antes de continuar tenemos que poner delante de todos los directorios “%dir” y modificar la ruta ( /opt/ssl ) de los ficheros  por “%{topdir}” ,pero si lo tenemos compilado en otro directorio cambiando el directorio del %define topdir ya lo tenemos arreglado , lo haremos de la siguiente manera :

sed -i ‘s#/opt/ssl#%{topdir}#g’ archivos.ssl

sed -i ‘s#/opt/ssl#%dir %{topdir}#g’ dirs.ssl

Tenemos que volcar el contenido de dirs.ssl y archivos.ssl  dentro del archivo .spec , usaremos el comando cat para concatenar el contenido al final del fichero .

cat dirs.ssl >> openssl.spec     Después de este comando os recomiendo editar el openssl.spec e ir al final del fichero y darle un par de espacios en blanco para diferenciar bien donde terminan los dirs y donde empiezan los ficheros .

cat archivos.ssl >> openssl.spec

En este punto ya podemos borrar los fichero dirs.ssl y archivos.ssl.

MIRAR BIEN LOS FICHERO .SPEC .Los dirs y archivos añadidos puede que no correspondan con la versión que useis por lo que deberíais repetir el proceso con cada  SPEC .

Dentro de SOURCES creo la carpeta openssl-1.0  y el openssl.tar.gz

mkdir openssl-1.0

tar –zcf openssl.tar.gz openssl-1.0

Creamos el paquete con rpmbuild -ba openssl.spec . Dentro del directorio RPMS/x86_64 está el paquete openssl-1.0-1.x86_64.rpm .

Borramos el directorio /opt/ssl instalamos el paquete y vemos como se ha vuelto a crear el contenido del paquete rpm .

[root@localhost x86_64]# rpm -ivh openssl-1.0-1.x86_64.rpm Preparing…                ########################################### [100%] ===================================================== Instalacion de OpenSSL ===================================================== 1:openssl                ########################################### [100%] [root@localhost x86_64]#

El procedimiento para el apache php es exactamente el mismo , es importante como dije que mireis cada spec porque se añaden alguno parametros en los ficheros .

Fuente

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »