Ich füge einige Quellen zu einer bestehenden rpm .spec
Datei per URL hinzu und lasse sie noch nicht herunterladen. Gibt es eine Möglichkeit, rpmbuild
zu erhalten, um die Quellen herunterzuladen, anstatt es manuell zu tun?Wie bekomme ich rpmbuild, um alle Quellen für eine bestimmte .spec herunterzuladen?
Antwort
Das Dienstprogrammaus dem Paket rpmdevtools
kann dies tun. Installieren Sie einfach rpmdevtools
und zeigen spectools
am .spec
wie so:
spectool -g -R SPECS/nginx.spec
Es wird heruntergeladen alle Quellen in Umdrehungen pro Minute des %{_sourcedir}
(in der Regel SOURCES
) Verzeichnis fehlt.
Für die Nachwelt ist es eine andere Möglichkeit, es zu tun, die keine zusätzlichen Werkzeuge oder Downloads benötigt:
rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec
Herunterladen Quellen standardmäßig automatisch verboten ist, weil RPM Integritätsprüfungen für die Quelle-eingebauten ermangelt Archiv. 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 Einschränkung einfach zwangsweise aufheben.
In der Spezifikationsdatei können Sie %undefine _disable_source_fetch
irgendwo vor der Quell-URL platzieren.
Aus Sicherheitsgründen sollten Sie auch die sha256sum angeben und im Abschnitt %prep
vor der Einrichtung überprüfen.
Hier ist ein funktionierendes Beispiel:
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
...
Credits
@YaroslavFedevych für undefine _disable_source_fetch.
Ich kann nicht finden, welche rpm spectool in SUSE enthält. – aleung
Ist es nicht einfach 'spectool' https://build.opensuse.org/package/show/devel:tools/spectool – joeforker
Da ich wissen wollte, was die Flags bedeuten: "-g, --gf, --get- files ruft die Quellen/Patches ab, die mit einer URL aufgelistet sind; -R, --sourcedir download in rpm% {_ sourcedir} " – Richlv