既存のrpmにいくつかのソースを追加しています.spec
URLでファイルし、まだダウンロードしていません。手動で行うのではなく、rpmbuild
を取得してソースをダウンロードする方法はありますか?
spectool
パッケージの rpmdevtools
ユーティリティはこれを行うことができます。 rpmdevtools
をインストールして、.spec
でspectools
をポイントするだけです。
spectool -g -R SPECS/nginx.spec
不足しているソースをrpmの%{_sourcedir}
(通常SOURCES
)ディレクトリにダウンロードします。
後世のために、追加のツールやダウンロードを必要としない別の方法があります:
rpmbuild --undefine=_disable_source_fetch -ba /path/to/your.spec
RPMにはソースアーカイブの組み込みの整合性チェックがないため、ソースの自動ダウンロードはデフォルトでは禁止されています。ネットワークは信頼され、チェックサムと署名がチェックされている必要があります。パッケージ管理者は信頼できるコードを配布する責任があるため、この制限は理にかなっています。
ただし、自分が何をしているかを理解し、リスクを理解したら、強制的に制限を解除できます。
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を未定義にします。
(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}