joe*_*ker 26 rpm rpmbuild rpm-spec
我正在.spec通过URL 向现有rpm 文件添加一些源,但尚未下载它们.有没有办法rpmbuild下载源而不是手动执行?
joe*_*ker 40
包中的spectool实用rpmdevtools程序可以执行此操作.只需安装rpmdevtools并指出spectools在.spec像这样:
spectool -g -R SPECS/nginx.spec
Run Code Online (Sandbox Code Playgroud)
它会将任何缺失的源下载到rpm %{_sourcedir}(通常SOURCES)目录中.
小智 23
对于后代,还有另一种方法,它不需要任何额外的工具或下载:
rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec
Run Code Online (Sandbox Code Playgroud)
默认情况下禁止自动下载源,因为RPM缺少源存档的内置完整性检查.必须信任网络,并检查任何校验和和签名.这种限制对包维护者有意义,因为他们负责发送可信代码.
但是,当您知道自己在做什么并了解风险时,您可能会强行解除限制.
Mat*_*att 11
在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
...
Run Code Online (Sandbox Code Playgroud)
积分
@YaroslavFedevych for undefine _disable_source_fetch.