Как мне получить rpmbuild для загрузки всех источников для определенного .spec?

Я добавляю некоторые источники в существующий файл rpm .spec по URL-адресу и пока не загружаю их. Есть ли способ получить rpmbuild для загрузки источников, а не для этого вручную?

Ответы

Ответ 1

spectool утилита из rpmdevtools может это сделать. Просто установите rpmdevtools и укажите spectools на .spec так:

spectool -g -R SPECS/nginx.spec

Он загрузит любые отсутствующие источники в каталог rpm %{_sourcedir} (обычно SOURCES).

Ответ 2

Для потомков существует другой способ сделать это, что не требует каких-либо дополнительных инструментов или загрузок:

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

Загрузка источников автоматически запрещена по умолчанию, потому что RPM не имеет встроенных проверок целостности исходных архивов. Сети необходимо доверять, и проверяются контрольные суммы и сигнатуры. Это ограничение имеет смысл для сопровождающих пакетов, поскольку они несут ответственность за доставку доверенного кода.

Однако, когда вы знаете, что делаете и понимаете риски, вы можете просто принудительно снять ограничение.

Ответ 3

В файле spec вы можете разместить %undefine _disable_source_fetch где угодно до исходного URL-адреса.

В целях безопасности вы также должны указать sha256sum и проверить его в разделе %prep перед настройкой.

Вот рабочий пример:

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

...

Кредиты

@YaroslavFedevych для undefine _disable_source_fetch.