web-dev-qa-db-ja.com

特定の.specのソースをすべてダウンロードするには、rpmbuildを取得するにはどうすればよいですか?

既存のrpmにいくつかのソースを追加しています.spec URLでファイルし、まだダウンロードしていません。手動で行うのではなく、rpmbuildを取得してソースをダウンロードする方法はありますか?

25
joeforker

spectool パッケージの rpmdevtools ユーティリティはこれを行うことができます。 rpmdevtoolsをインストールして、.specspectoolsをポイントするだけです。

spectool -g -R SPECS/nginx.spec

不足しているソースをrpmの%{_sourcedir}(通常SOURCES)ディレクトリにダウンロードします。

39
joeforker

後世のために、追加のツールやダウンロードを必要としない別の方法があります:

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

RPMにはソースアーカイブの組み込みの整合性チェックがないため、ソースの自動ダウンロードはデフォルトでは禁止されています。ネットワークは信頼され、チェックサムと署名がチェックされている必要があります。パッケージ管理者は信頼できるコードを配布する責任があるため、この制限は理にかなっています。

ただし、自分が何をしているかを理解し、リスクを理解したら、強制的に制限を解除できます。

23

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で_disable_source_fetchを未定義にします。

11
Matt

(git)ホスティングサービス(githubなど)からソースを取得している場合、_disable_source_fetchと組み合わせた場合、すでに組み込まれているものを自動的にチェックアウトするサポートがあります...

https://fedoraproject.org/wiki/Packaging:SourceURL

たとえば、githubの特定のギタッシュの場合:

%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}
1
tesch1