Frage Wie bekomme ich rpmbuild, um alle Quellen für eine bestimmte .spec herunterzuladen?


Ich füge einige Quellen zu einer bestehenden rpm hinzu .spec Datei per URL und haben sie noch nicht heruntergeladen. Gibt es einen Weg zu bekommen? rpmbuild die Quellen herunterladen, anstatt es manuell zu tun?


17
2017-10-16 18:39


Ursprung


Antworten:


Das spectool Dienstprogramm von der rpmdevtools Paket kann dies tun. Einfach installieren rpmdevtools und zeigen spectools Bei der .spec so:

spectool -g -R SPECS/nginx.spec

Es wird alle fehlenden Quellen in RPMs herunterladen %{_sourcedir} (gewöhnlich SOURCES) Verzeichnis.


31
2017-10-16 18:41



Für die Nachwelt gibt es einen anderen Weg, es zu tun, der keine zusätzlichen Werkzeuge oder Downloads benötigt:

rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec

Das automatische Herunterladen von Quellen ist standardmäßig verboten, da RPM nicht über integrierte Integritätsprüfungen für die Quellarchive verfügt. Das Netzwerk muss vertrauenswürdig sein und alle Prüfsummen und Signaturen überprüft werden. Diese Einschränkung ist für Paketbetreuer sinnvoll, da sie für das Versenden von vertrauenswürdigem Code verantwortlich sind.

Wenn Sie jedoch wissen, was Sie tun, und die Risiken verstehen, können Sie die Beschränkung einfach zwangsweise aufheben.


8
2017-09-11 10:49



In der Spezifikationsdatei können Sie platzieren %undefine _disable_source_fetch irgendwo vor der Quell-URL.

Aus Sicherheitsgründen sollten Sie auch die sha256sum angeben, und überprüfen Sie es in der %prep Abschnitt vor der Einrichtung.

Hier ist ein Arbeitsbeispiel:

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

...

Kredite

@ YaroslavFedevych für undefiniert _disable_source_fetch.


4
2018-01-13 11:48