rpm - tipografias - tipografía cursiva
¿Cómo consigo que rpmbuild descargue todas las fuentes para un.spec en particular? (4)
Estoy agregando algunas fuentes a un archivo rpm .spec
existente por URL y todavía no las he descargado. ¿Hay alguna manera de hacer que rpmbuild
descargue las fuentes en lugar de hacerlo manualmente?
En el archivo de especificaciones, puede colocar %undefine _disable_source_fetch
cualquier lugar antes de la URL de origen.
Por motivos de seguridad, también debe especificar el sha256sum y verificarlo en la sección %prep
antes de la configuración.
Aquí hay un ejemplo de trabajo:
Name: monit
Version: 5.25.1
Release: 1%{?dist}
Summary: Monitoring utility for unix systems
Group: Applications/System
License: GNU AFFERO GENERAL PUBLIC LICENSE version 3
URL: https://mmonit.com/monit/
%undefine _disable_source_fetch
Source0: https://mmonit.com/monit/dist/%name-%version.tar.gz
%define SHA256SUM0 4b5c25ceb10825f1e5404f1d8a7b21507716b82bc20c3586f86603691c3b81bc
%define debug_package %nil
BuildRequires: coreutils
%description
Monit is a small Open Source utility for managing and monitoring Unix systems. Monit conducts automatic maintenance
and repair and can execute meaningful causal actions in error situations.
%prep
echo "%SHA256SUM0 %SOURCE0" | sha256sum -c -
%setup -q
...
Creditos
@YaroslavFedevych para undefine _disable_source_fetch.
La utilidad rpmdevtools
paquete rpmdevtools
puede hacer esto. Simplemente instale rpmdevtools
y apunte spectools
en el .spec
así:
spectool -g -R SPECS/nginx.spec
Descargará las fuentes faltantes en el directorio %{_sourcedir}
(generalmente SOURCES
) de rpm.
Para la posteridad, hay otra forma de hacerlo, que no necesita herramientas o descargas adicionales:
rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec
La descarga automática de fuentes está prohibida de forma predeterminada porque RPM carece de controles de integridad incorporados para los archivos de origen. La red debe ser de confianza, y deben comprobarse todas las sumas de comprobación y firmas. Esta restricción tiene sentido para los mantenedores de paquetes, ya que son responsables de enviar el código de confianza.
Sin embargo, cuando sabe lo que está haciendo y comprende los riesgos, puede levantar la restricción a la fuerza.
Si está obteniendo fuentes de un servicio de alojamiento (git) (github, etc.), hay soporte para que lo extraiga automáticamente ya integrado cuando se combina con _disable_source_fetch ...
https://fedoraproject.org/wiki/Packaging:SourceURL
Por ejemplo, para un githash específico de github:
%global commit 40-CHARACTER-HASH-VALUE
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Source0: https://github.com/OWNER/PROJECT/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
...
%prep
%autosetup -n PROJECT-%{commit}