我正在通过URL向现有的rpm .spec
文件添加一些源,但尚未下载它们。有没有办法让rpmbuild
下载源而不是手动执行?
答案 0 :(得分:38)
spectool
包中的rpmdevtools
实用程序可以执行此操作。只需安装rpmdevtools
并将spectools
指向.spec
,就像这样:
spectool -g -R SPECS/nginx.spec
它会将任何缺少的资源下载到rpm的%{_sourcedir}
(通常是SOURCES
)目录中。
答案 1 :(得分:18)
对于后代,还有另一种方法,它不需要任何额外的工具或下载:
browser.execute(() => {
$('a.m_library').click();
});
默认情况下禁止自动下载源,因为RPM缺少源存档的内置完整性检查。必须信任网络,并检查任何校验和和签名。这种限制对包维护者有意义,因为他们负责发送可信代码。
然而,当你知道自己在做什么并了解风险时,你可能会强行解除限制。
答案 2 :(得分:9)
在规范文件中,您可以将%undefine _disable_source_fetch
放在源网址之前的任何位置。
出于安全考虑,您还应指定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 for undefine _disable_source_fetch。
答案 3 :(得分:1)
如果您是从(git)托管服务(例如github等)获取源代码,则当与_disable_source_fetch结合使用时,支持自动将其检出已内置...
https://fedoraproject.org/wiki/Packaging:SourceURL
例如,对于来自github的特定githash:
%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}