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
- Crear una cuenta en Copr.
- Haz clic en “Crear nuevo repositorio”.
- A帽adimos nombre, descripci贸n e instrucciones.
- Selecionamos los
chroots
que queremos usar. - Damos clic en “Create”.
Building el paquete
- Vamos a la pesta帽a
Builds
- Damos clic en
New Build
- Seleccionamos el source
- A帽adimos la url del spec del paquete o subimos el
src.rpm
- Seleccionamos los
chroots
que queremos usar. - 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
- Python package: hmta.spec
- Python package: requests.spec
Eso es todo por hoy. Si tienes alguna inquietud no dudes en dej谩rmela en los comentario.
隆Gracias por leer!