Diferencia entre revisiones de «RPM's»

De Ardemans Wiki
Saltar a: navegación, buscar
(Página creada con «== Creación de RPM's == Estos son mis apuntes sobre como crear mis propios RPMs, los cuales creo que son importantes para mantener el software de mi propia organización....»)
 
(Generando los paquetes de collectd)
 
(4 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
== Creación de RPM's ==
 
== Creación de RPM's ==
 
Estos son mis apuntes sobre como crear mis propios RPMs, los cuales creo que son importantes para mantener el software de mi propia organización.
 
Estos son mis apuntes sobre como crear mis propios RPMs, los cuales creo que son importantes para mantener el software de mi propia organización.
 +
 +
Existen alternativas "fáciles" com ola que propone jordan sissel con [https://github.com/jordansissel/fpm este paquete]
  
 
Como ejemplo voy a usar el programa collectd para generar mi propio RPM que distribuiré entre las máquinas de mi organización. Para hacerlo usaré lo que he aprendido sobre repositorios YUM.
 
Como ejemplo voy a usar el programa collectd para generar mi propio RPM que distribuiré entre las máquinas de mi organización. Para hacerlo usaré lo que he aprendido sobre repositorios YUM.
  
Como referencia usaré la info que hay en [esta página de centos http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment]
+
Como referencia usaré la info que hay en [http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment esta página de centos] y en [http://www.owlriver.com/tips/non-root/ esta otra]
 +
 
 +
=== Primeros pasos para empezar a crear mi propio RPM ===
 +
En primero lugar instalamos el paquete rpm-build
 +
<pre>
 +
yum install rpm-build
 +
</pre>
 +
 
 +
Se aconseja y mucho crear los RPM's con un usuario que no tenga privilegios, para lo cual en mi máquina virtual de ejemplo me voy a crear el usuario rpm:
 +
<pre>
 +
useradd -g users -m rpm
 +
</pre>
 +
 
 +
Después hay que crear la estructura de directorios necesaria para construir los RPM. Lo podemos hacer fácilmente con el siguiente comando:
 +
 
 +
<pre>
 +
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
 +
</pre>
 +
 
 +
Y por último tenemos que crear un directorio de configuración que defina el path por defecto donde nuestros RPM's van a ser construidos. Este fichero es ''' ~/.rpmmacros''' y podremos crearlo de la siguiente manera:
 +
 
 +
<pre>
 +
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
 +
</pre>
 +
 
 +
También nos harán falta los paquetes make y gcc, ya que a fin de cuentas crear un RPM significa compilar un programa
 +
 
 +
<pre>
 +
yum install make gcc
 +
</pre>
 +
 
 +
 
 +
=== Generando los paquetes de collectd ===
 +
Lo dificil de generar los paquetes rpm debe ser el genera el fichero spec. Es en este fichero donde se dicen los parámetros de compilación y las dependencias que va a tener el paquete.
 +
 
 +
En el caso de collectd es sencillo, ya que este fichero spec ya está generado, aunque también es verdad que mencionan en el README de collectd que se ha de tomar como base para futuras compilaciones, vamos, que se puede personalizar.
 +
 
 +
Para mi prueba estoy seguro de que me vale con el que ya está generado, así que me lanzo a por él. En primer lugar, copio el fichero collectd.spec en mi nueva estructura para rpmbuild, exactamente en '''/home/rpm/rpmbuild/SPECS/collectd.spec'''
 +
 
 +
Después hay que bajar el código fuente, y este puede estar en formato tar.gz o tar.bz2. El origen se puede definir dentro del fichero de especificaciones (.spec).
 +
 
 +
Una vez bajado el fichero correspondiente a la versión que quiero compilar, la que viene en el .spec, ejecutamos:
 +
 
 +
<pre>
 +
/home/rpm/rpmbuild]$ rpmbuild -ba SPECS/collectd.spec
 +
</pre>
 +
 
 +
La primera vez que lo he ejecutado ha dado error y me ha saltado una lista de dependencias que había que instalar, casi todos haciendo referencia a paquetes -devel de diferentes servicios, como mysql-devel o curl-devel.
  
=== Pasos para empezar a crear mi propio RPM ===
+
Una vez instaladas todas las dependencias veremos como se ejecuta el proceso del configure y después el make, como si lo compilaramos nosotros manualmente. Una vez finalizado veremos en el directorio '''/home/rpm/rpmbuild/RPMS''' todos los rpm's que se han generado.
En primero lugar
+

Última revisión de 21:00 23 nov 2014

Creación de RPM's

Estos son mis apuntes sobre como crear mis propios RPMs, los cuales creo que son importantes para mantener el software de mi propia organización.

Existen alternativas "fáciles" com ola que propone jordan sissel con este paquete

Como ejemplo voy a usar el programa collectd para generar mi propio RPM que distribuiré entre las máquinas de mi organización. Para hacerlo usaré lo que he aprendido sobre repositorios YUM.

Como referencia usaré la info que hay en esta página de centos y en esta otra

Primeros pasos para empezar a crear mi propio RPM

En primero lugar instalamos el paquete rpm-build

yum install rpm-build

Se aconseja y mucho crear los RPM's con un usuario que no tenga privilegios, para lo cual en mi máquina virtual de ejemplo me voy a crear el usuario rpm:

useradd -g users -m rpm

Después hay que crear la estructura de directorios necesaria para construir los RPM. Lo podemos hacer fácilmente con el siguiente comando:

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

Y por último tenemos que crear un directorio de configuración que defina el path por defecto donde nuestros RPM's van a ser construidos. Este fichero es ~/.rpmmacros y podremos crearlo de la siguiente manera:

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

También nos harán falta los paquetes make y gcc, ya que a fin de cuentas crear un RPM significa compilar un programa

yum install make gcc


Generando los paquetes de collectd

Lo dificil de generar los paquetes rpm debe ser el genera el fichero spec. Es en este fichero donde se dicen los parámetros de compilación y las dependencias que va a tener el paquete.

En el caso de collectd es sencillo, ya que este fichero spec ya está generado, aunque también es verdad que mencionan en el README de collectd que se ha de tomar como base para futuras compilaciones, vamos, que se puede personalizar.

Para mi prueba estoy seguro de que me vale con el que ya está generado, así que me lanzo a por él. En primer lugar, copio el fichero collectd.spec en mi nueva estructura para rpmbuild, exactamente en /home/rpm/rpmbuild/SPECS/collectd.spec

Después hay que bajar el código fuente, y este puede estar en formato tar.gz o tar.bz2. El origen se puede definir dentro del fichero de especificaciones (.spec).

Una vez bajado el fichero correspondiente a la versión que quiero compilar, la que viene en el .spec, ejecutamos:

/home/rpm/rpmbuild]$ rpmbuild -ba SPECS/collectd.spec

La primera vez que lo he ejecutado ha dado error y me ha saltado una lista de dependencias que había que instalar, casi todos haciendo referencia a paquetes -devel de diferentes servicios, como mysql-devel o curl-devel.

Una vez instaladas todas las dependencias veremos como se ejecuta el proceso del configure y después el make, como si lo compilaramos nosotros manualmente. Una vez finalizado veremos en el directorio /home/rpm/rpmbuild/RPMS todos los rpm's que se han generado.