J'ajoute certaines sources à un fichier rpm .spec
par URL et je ne les ai pas encore téléchargées. Existe-t-il un moyen d'obtenir que rpmbuild
télécharge les sources plutôt que de le faire manuellement?
L'utilitaire spectool
du package rpmdevtools
peut le faire. Installez simplement rpmdevtools
et pointez spectools
sur le .spec
comme ceci:
spectool -g -R SPECS/nginx.spec
Il téléchargera toutes les sources manquantes dans le répertoire %{_sourcedir}
(généralement SOURCES
) de rpm.
Pour la postérité, il existe un autre moyen de le faire, qui ne nécessite aucun outil ni téléchargement supplémentaire:
rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec
Le téléchargement automatique de sources est interdit par défaut, car RPM ne dispose pas de contrôles d’intégrité intégrés pour les archives sources. Il faut faire confiance au réseau et vérifier les totaux de contrôle et les signatures. Cette restriction est logique pour les responsables de package, car ils sont responsables de l'envoi du code approuvé.
Cependant, lorsque vous savez ce que vous faites et comprenez les risques, vous pouvez simplement lever de force la restriction.
Dans le fichier de spécifications, vous pouvez placer %undefine _disable_source_fetch
n'importe où avant l'URL source.
Pour des raisons de sécurité, vous devez également spécifier la somme sha256 et la vérifier dans la section %prep
avant la configuration.
Voici un exemple de travail:
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
...
Crédits
@YaroslavFedevych pour indéfinir _disable_source_fetch.
Si vous obtenez des sources d’un service d’hébergement (git) (github, etc.), il est possible de vérifier automatiquement si le contenu est déjà intégré, lorsque combiné avec _disable_source_fetch ...
https://fedoraproject.org/wiki/Packaging:SourceURL
Par exemple, pour un githash spécifique à partir 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}