Link original: RPM Packaging

Empaquetando RPM

Ejecuta:

sudo dnf install fedora-packager rpmdevtools gcc
rpmdev-setuptree
cd ~/rpmbuild/SOURCES
wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
cd ~/rpmbuild/SPECS
rpmdev-newspec --macros hello.spec

Ahora puedes abrir el archivo hello.spec y modificarlo. Coloca el siguiente contenido:

Name:     hello
Version:  2.10
Release:  1%{?dist}
Summary:  El programa "Hola Mundo" de GNU
License:  GPLv3+
URL:      http://ftp.gnu.org/gnu/hello
Source0: https://ftp.gnu.org/gnu/hello/hello-%{version}.tar.gz

BuildRequires: gettext

Requires(post): info
Requires(preun): info

%description
El programa "Hola Mundo", realizado con todas las caracter铆sticas de un proyecto FOSS adecuado, incluyendo configuraci贸n, construcci贸n, internacionalizaci贸n, archivos de ayuda, etc.

%prep
%autosetup

%build
%configure
%make_build

%install
%make_install
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir

%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :

%preun
if [ $1 = 0 ] ; then
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi

%files -f %{name}.lang
%{_mandir}/man1/hello.1.*
%{_infodir}/hello.info.*
%{_bindir}/hello

%doc AUTHORS ChangeLog NEWS README THANKS TODO
%license COPYING

%changelog
* Mar Sep 06 2011 El Coon de Ty <Ty@coon.org> - 2.8-1
- Versi贸n inicial del paquete

Una vez que hayas terminado, puedes ejecutar:

rpmbuild -ba hello.spec

Tu paquete deber铆a estar listo en ~/rpmbuild/RPMS/x86_64/hello-2.10-1.fc27.x86_64.rpm.

Recursos

Puedes aprender m谩s sobre todas las secciones y etiquetas del archivo SPEC en la documentaci贸n de Fedora “C贸mo crear un paquete RPM” o en la Gu铆a de Empaquetado RPM.

Empaquetado para otras distribuciones

El comando rpmbuild crea un paquete solo para la arquitectura y distribuci贸n de tu propia estaci贸n de trabajo. Si deseas crear un RPM para otra distribuci贸n y otra arquitectura, necesitas usar Mock. Puede construir paquetes para diferentes arquitecturas y diferentes versiones de Fedora o RHEL. Mock crea chroots y construye paquetes en ellos. Su 煤nica tarea es crear un chroot e intentar construir un paquete ah铆.

Para instalar Mock debemos ejecutar:

sudo dnf install mock mock-scm
sudo usermod -a -G mock TuNombreDeUsuario
newgrp mock

Contruyendo paquetes con Mock

Antes de empezar a usar Mock, debes tener un SRC.RPM (tambi茅n llamado SRPM). Puedes crearlo usando rpmbuild:

rpmbuild -bs hello.spec

Luego puedes ejecutar:

mock -r /etc/mock/epel-6-i386.cfg ~/rpmbuild/SRPMS/hello-2.10-1.fc27.src.rpm

Esto crea un paquete CentOS/RHEL para la arquitectura i386 incluso cuando la arquitectura de tu estaci贸n de trabajo es x86_64 y tu estaci贸n de trabajo es, por ejemplo, Fedora. La lista de configuraciones disponibles se puede encontrar en el directorio /etc/mock/.

Puedes crear un RPM directamente desde git (u cualquier otro SCM) usando el complemento mock-scm. Puedes probar con:

mock -r fedora-22-x86_64 --scm-enable --scm-option method=git --scm-option package=PKG --scm-option git_get=set --scm-option spec=YOUR.SPEC --scm-option branch=master --scm-option write_tar=True --scm-option git_get='git clone git@git_ip_address:SCM_PKG.git SCM_PKG'

Para m谩s informaci贸n dir铆gete a la documentaci贸n de mock-scm.

Si est谩s construyendo un paquete de c贸digo abierto, puedes usar el servicio Copr, que automatiza la parte de mock y createrepo_c y proporciona una agradable interfaz web.

Usando Copr

Puedes encontrar un tutorial con imagenes en la documentaci贸n.

Creando un repositorio

  1. Crear una cuenta en Copr.
  2. Haz clic en “Crear nuevo repositorio”.
  3. A帽adimos nombre, descripci贸n e instrucciones.
  4. Selecionamos los chroots que queremos usar.
  5. Damos clic en “Create”.

Building el paquete

  1. Vamos a la pesta帽a Builds
  2. Damos clic en New Build
  3. Seleccionamos el source
  4. A帽adimos la url del spec del paquete o subimos el src.rpm
  5. Seleccionamos los chroots que queremos usar.
  6. Damos clic en Build

Instalando el repositorio

Para comprobar que el repositorio se ha creado correctamente, ejecutamos:

sudo dnf copr enable TuNombreDeUsuario/NombreDelRepositorio

Y despu茅s:

sudo dnf install NombreDelPaquete

Bonus

Archivos SPEC


Eso es todo por hoy. Si tienes alguna inquietud no dudes en dej谩rmela en los comentario.

隆Gracias por leer!