Skip to content
56K

56K

Slow IT just 4 fun

Menu
Menu

Crear un paquete RPM desde cero

Posted on 17/10/202106/02/2023 by fanta

En la anterior entrada se habló de como podemos gestionar notas desde el terminal. Una forma rápida y organizada de tomar notas mediante un sencillo script en bash.

Ese script se encuentra en el repositorio git siguiente: git.56k.es/fanta/n

Ese script es el que vamos a utilizar como ejemplo para crear un paquete RPM.

 

Instalar las dependencias sobre RHEL 7

# yum install gcc git tree rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools -y

Una vez instaladas vamos a crear un usuario llamado rpm. Ese usuario es el que vamos a utilizar para crear los paquetes RPM.

 

Creación de un usuario en el sistema

Creamos el usuario así:

# adduser -m rpm

Ponemos una password a ese usuario y accedemos como user rpm así:

# passwd rpm
# su - rpm

 

Creamos una estructura de directorios para construir los RPMs

Con el comando rpmdev-setuptree vamos a crear la estructura de directorios.

$ rpmdev-setuptree

Creará un directorio llamado rpmbuild dentro de /home/rpm/ . Y dentro del directorio rpmbuild los siguientes directorios:

 

 

BUILD – El directorio donde van a parar todos los archivos que se crean durante la compilación del paquete.
RPMS – El directorio en el que se creará el archivo RPM final si todo va bien.
SOURCES – El directorio en el que se coloca el archivo tar.gz de origen. El archivo que contiene lo que queremos desplegar en el paquete final.
SPECS – En este directorio metemos los archivos specs. Un archivo de «specs» es básicamente un conjunto de instrucciones sobre cómo construir el paquete.
SRPMS – Contiene el source de los diferentes RPMs que generemos.

Vamos a meter el contenido en SOURCES

En el directorio SOURCES vamos a crear un archivo tar.gz con el contenido de nuestro programa. En este caso ese programa se llama «n».

$ cd SOURCES/
$ git clone http://git.56k.es/fanta/n n-fanta-0.0.1
$ rm -rf n-fanta-0.0.1/.git/
$ tar cfvz n-fanta-0.0.1.tar.gz n-fanta-0.0.1/
$ rm -rf n-fanta-0.0.1
$ cd ..

El proceso es sencillo. Hemos entrado al directorio SOURCES y hemos clonado el código del repositorio «n» con el nombre n-fanta-0.0.1
Luego hemos borrado el directorio .git de dentro del directorio «n-fanta-0.0.1» para no generar un archivo tar.gz con ese contenido en su interior.

Finalmente hemos creado un archivo llamado n-fanta-0.0.1.tar.gz y hemos borrado el directorio n-fanta-0.0.1

 

Creación del archivo de especificaciones

Ahora vamos a entrar en el directorio SPECS para construir el archivo de especificación del paquete RPM.

Esto se hace con el comando rpmdev-newspec para tener una plantilla de ejemplo:

$ rpmdev-newspec

Eso creará un archivo llamado newpackage.spec  por defecto. Si le indicamos el nombre del paquete que queremos crear mejor que mejor.
En mi caso voy a crearlo con un nombre que me permita identificar que se trata de un paquete mio.

$ rpmdev-newspec n-fanta

 

Y en el interior del archivo me cargo todo para dejar un archivo spec como este:

%define debug_package %{nil}

Name: n-fanta
Version: 0.0.1
Release: %{version}_%{?dist}
Summary: n note manager
Group: Miscellaneous
License: GPL Version 3
URL: http://git.56k.es/fanta/n
Source0: n-fanta-0.0.1.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch

%description
n de notas es un script que permite rápidamente tomar notas y categorizarlas.

%prep

%setup -q

%build

%install
mkdir -p $RPM_BUILD_ROOT/usr/bin/
cp -r ./n $RPM_BUILD_ROOT/usr/bin/n

%clean
rm -rf $RPM_BUILD_ROOT

%files
/usr/bin/n

%defattr(-,root,root,-)

En la sección %install creamos un directorio /usr/bin/ y copiamos allí el archivo n del tar.gz
En la sección %files indicamos donde queremos que se copie el archivo.

 

Construir el paquete RPM

El paquete RPM se puede construir así:

$ rpmbuild -ba /home/rpm/rpmbuild/SPECS/n-fanta.spec

Eso generará un archivo RPM en la siguiente ruta:

/home/rpm/rpmbuild/RPMS/noarch/n-fanta-0.0.1-0.0.1_.el7_9.noarch.rpm

Instalar el paquete RPM

Como root podemos instalar el paquete rpm en nuestro sistema.

# rpm -iv /home/rpm/rpmbuild/RPMS/noarch/n-fanta-0.0.1-0.0.1_.el7_9.noarch.rpm

 

Desinstalar el paquete RPM

Y desinstalar para ver si se borra el archivo de /usr/bin/n

# rpm -ev n-fanta

 

Y eso es todo. Es un ejemplo sencillo de creación de un RPM

Saludos cordiales.

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
🍅 STREAMING
🍊 LINUX
🥝 GAMES
🥥 THREADS
🧅 SECURITY
🥑 RETRO
🍆 HARDWARE
🍇 MISC
📝 NOTES
©2023 56K | Built using WordPress and Responsive Blogily theme by Superb