En ocasiones, como administrador de sistemas o desarrollador, te encontrarás con la necesidad de distribuir tus propios fondos de pantalla, scripts o programas de una forma estandarizada. Aprender a crear un paquete RPM es una habilidad fundamental en el ecosistema de distribuciones como Fedora, CentOS o RHEL. En este artículo te guiaré a través del procedimiento estándar y correcto para que un principiante pueda construir su propio paquete RPM básico desde cero.

¿Qué es un RPM?
Un RPM (RPM Package Manager) es un formato de archivo que funciona como un sistema de gestión de paquetes para distribuciones Linux como Fedora, CentOS o RHEL. Contiene los ficheros de una aplicación junto a metadatos clave (nombre, versión, dependencias) que permiten instalar, actualizar y eliminar el software de forma limpia y automatizada.
Por ejemplo, si tienes un archivo logo.png que debe instalarse en /usr/share/icons/, el paquete RPM contendrá ese archivo y las instrucciones para que, al instalarse, se copie a la ruta correcta. Esto es especialmente útil para mantener la consistencia del sistema, una práctica que conozco bien tras años de administrar servidores.
1. Preparación del código fuente
Usaremos un script simple en bash que imprime un saludo en la consola. Este es un ejemplo perfecto de cómo empaquetar un script en RPM.
- Crea un archivo llamado
hello-adictosalinux. Para ello, te recomiendo seguir las bases que explico en mi guía para crear tu primer script en Bash. Luego, añade el siguiente contenido:
#!/usr/bin/env bash
echo '¡Saludos desde RPM, AdictosaALinux!'- Otorga permisos de ejecución:
chmod +x hello-adictosalinux- Empaqueta el script en un archivo
.tar.gzdentro de un directorio versionado:
mkdir hello-adictosalinux-1.0
mv hello-adictosalinux hello-adictosalinux-1.0/
tar -czvf hello-adictosalinux-1.0.tar.gz hello-adictosalinux-1.0/2. Organización del entorno de compilación
- Instala las herramientas necesarias. Para instalar rpmdevtools y
rpm-build, ejecuta:
sudo dnf install rpmdevtools rpm-build- Crea la estructura de directorios estándar:
rpmdev-setuptreeEsto generará:
~/rpmbuild/SOURCES: para los archivos fuente comprimidos.~/rpmbuild/SPECS: para los archivos.spec.
- Mueve el archivo fuente:
mv hello-adictosalinux-1.0.tar.gz ~/rpmbuild/SOURCES/3. Crear un Archivo SPEC para tu Paquete RPM
El archivo SPEC es el “manual de instrucciones” para rpmbuild. Define todo sobre el paquete: qué es, de dónde viene el código, cómo construirlo y qué archivos instalar.
Crea el archivo ~/rpmbuild/SPECS/hello-adictosalinux.spec con el siguiente contenido corregido y mejorado:
Name: hello-adictosalinux
Version: 1.0
Release: 1%{?dist}
Summary: Imprime un saludo en la consola
License: MIT
URL: https://adictosalinux.com
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
Requires: bash
%description
Un programa simple que imprime "¡Saludos desde RPM, AdictosaALinux!" en la consola.
%prep
%setup -q
%build
# No hay pasos de compilación necesarios
%install
install -Dm755 %{name} %{buildroot}/usr/bin/%{name}
%files
/usr/bin/%{name}
%clean
rm -rf %{buildroot}
%changelog
* Wed Oct 29 2025 Mateo TuxMaster <contacto@adictosalinux.com> - 1.0-1
- Versión inicial del paqueteExplicación de las directivas y secciones
- Puntos Clave: Este archivo es la pieza central del empaquetado RPM. Define desde los metadatos básicos hasta las acciones de instalación.
- Directivas Esenciales:
Name,Version,LicenseySource0son fundamentales para identificar el paquete. - Secciones de Scripting: Las secciones como
%prep,%instally%filesdictan los comandos exactos para construir e instalar el software.
A continuación, un desglose de las directivas más importantes:
- Name, Version: Nombre y versión del software.
- Release: Versión del paquete.
1%{?dist}se expande automáticamente a la etiqueta de la distribución (ej..el9,.fc39), facilitando la portabilidad. - Summary: Descripción breve del paquete.
- License: Tipo de licencia (MIT, GPLv3, etc.). Si tienes dudas sobre cuál elegir, puedes consultar esta guía sobre los tipos de [ENLACE_INTERNO url=”https://adictosalinux.com/licencia-de-codigo-abierto/” anchor=”licencia de código abierto”].
- URL: Sitio web oficial del proyecto.
- Source0: Archivo fuente. Las macros
%{name}y%{version}permiten mantener consistencia si cambias el nombre o versión. - BuildArch: Arquitectura.
noarchindica que el paquete no depende de una arquitectura específica. - Requires: Dependencias necesarias para que el paquete funcione.
- %description: Descripción extendida del paquete.
- %prep: Prepara el entorno.
%setup -qdescomprime el archivo fuente y entra al directorio. - %build: Sección de compilación. Aunque no se compila nada, incluirla es buena práctica.
- %install: Instala los archivos en
%{buildroot}. Usamosinstall -Dm755para asegurar permisos correctos y crear directorios si no existen. - %files: Lista los archivos que se incluirán en el paquete final.
- %clean: Limpia el entorno de compilación.
- %changelog: Historial de cambios del paquete.
Para un análisis más profundo, la documentación oficial de Red Hat sobre archivos SPEC es un recurso excelente.
Cómo Construir un RPM con rpmbuild
- Navega al directorio de especificaciones:
cd ~/rpmbuild/SPECS/- Ejecuta la construcción. Este es el paso clave de este rpmbuild tutorial:
rpmbuild -ba hello-adictosalinux.specEl paquete generado estará en ~/rpmbuild/RPMS/noarch/, con un nombre como hello-adictosalinux-1.0-1.el9.noarch.rpm. ¡Felicidades, acabas de crear un paquete RPM!
5. Instalación y verificación
- Instala el paquete:
Fedora, RHEL, CentOS:
sudo dnf install ~/rpmbuild/RPMS/noarch/hello-adictosalinux-1.0-1.el9.noarch.rpmopenSUSE:
sudo zypper install ~/rpmbuild/RPMS/noarch/hello-adictosalinux-1.0-1.opensuse15.5.noarch.rpm- Verifica la instalación:
hello-adictosalinuxDeberías ver: ¡Saludos desde RPM, AdictosaALinux!
- Verifica los archivos instalados:
rpm -ql hello-adictosalinux- Para desinstalar el paquete:
sudo dnf remove hello-adictosalinux Este proceso demuestra cómo construir un RPM de manera limpia y reproducible. Para profundizar en el tema, recomiendo la guía oficial de empaquetado de Red Hat.







¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.