検索

2.12. Software Collection の構築

download PDF
「従来の spec ファイルの変換」 の説明に従って、Software Collection の従来の spec ファイルを正しく変換した場合は、Software Collection と従来のビルドルートの両方で、生成されるパッケージを構築できます。従来のビルドルートで変換されたパッケージを構築すると、従来のベースシステム RPM パッケージが生成されますが、%{scl}-build を含む Software Collection ビルドルートでビルドすると、Software Collection パッケージが生成されます。
システムで Software Collection を構築するには、以下のコマンドを実行します。
 rpmbuild -ba package.spec --define 'scl name' 
上記のコマンドと、従来のパッケージ (rpmbuild -ba package.spec) を構築する標準コマンドの違いは、Software Collection を構築する際に、rpmbuild コマンドに --define オプションを追加する必要があります。
--define オプションは、scl マクロを定義します。これは、Software Collection の spec ファイル (package.spec) で設定された Software Collection を使用します。
標準コマンド rpmbuild -ba package.spec を使用して Software Collection を構築するには、package.spec ファイルで以下を指定します。
BuildRequires: software_collection-build
ここで、software_collection は Software Collection の名前になります。

2.12.1. サブパッケージを構築せずにソフトウェアコレクションの再構築

ビルドサブパッケージ (software_collection-build) がない Software Collection を再構築する場合は、Software Collection メタパッケージを再ビルドして、この rpmbuild -ba package.spec --define 'scl name' コマンドを回避して、ビルドサブパッケージを作成できます。
システムに scl-utils-build パッケージをインストールする必要があります。そうしないと、rpmbuild コマンドで Software Collection メタパッケージを再構築すると失敗します。
scl-utils-build パッケージの詳細は、「Software Collections のサポートの有効化」を参照してください。

2.12.2. debuginfo ファイルの競合の回避

同じ Source タグを指定する 2 つの Software Collection パッケージ (または従来の RPM パッケージと Software Collection パッケージ) を構築すると、%_builddir ディレクトリーにあるソースファイルを同じディレクトリーに展開すると、その debuginfo パッケージによりファイルの競合が発生します。このような競合により、ユーザーは両方のパッケージを同時に同じシステムにインストールすることができません。
これらのファイルの競合を回避するには、いずれかのパッケージの spec ファイルを変更して、アップストリームのソースを一意の名前のトップディレクトリーに展開する必要があります。これにより、%_builddir ディレクトリーの下にあるビルドツリーにディレクトリーレベルが 1 つ以上追加されます。これを実行することで、debuginfo パッケージ生成スクリプトは、他の debuginfo パッケージのファイルと競合しない debuginfo ファイルを作成します。
元のスペックファイルと変更されたスペックファイルを比較した diff ファイルがどのように見えるかを確認するには、次の例を参照してください。
--- a/tbb.spec
+++ b/tbb.spec
@@ -66,11 +66,13 @@ PDF documentation for the user of the Threading Building Block (TBB)
 C++ library.
 
 %prep
-%setup -q -n %{sourcebasename}
+%setup -q -c -n %{name}
+cd %{sourcebasename}
 %patch1 -p1
 %patch2 -p1
 
 %build
+cd %{sourcebasename}
 %{?scl:scl enable %{scl} - << \EOF}
 make %{?_smp_mflags} CXXFLAGS="$RPM_OPT_FLAGS" tbb_build_prefix=obj
 %{?scl:EOF}
@@ -81,6 +83,7 @@ done
 
 %install
 rm -rf $RPM_BUILD_ROOT
+cd %{sourcebasename}
 mkdir -p $RPM_BUILD_ROOT/%{_libdir}
 mkdir -p $RPM_BUILD_ROOT/%{_includedir}
 
@@ -108,20 +111,20 @@ done
 
 %files
 %defattr(-,root,root,-)
-%doc COPYING doc/Release_Notes.txt
+%doc %{sourcebasename}/COPYING %{sourcebasename}/doc/Release_Notes.txt
 %{_libdir}/*.so.2
 
 %files devel
 %defattr(-,root,root,-)
-%doc CHANGES
+%doc %{sourcebasename}/CHANGES
 %{_includedir}/tbb
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/*.pc
 
 %files doc
 %defattr(-,root,root,-)
-%doc doc/Release_Notes.txt
-%doc doc/html
+%doc %{sourcebasename}/doc/Release_Notes.txt
+%doc %{sourcebasename}/doc/html
 
 %changelog
 * Wed Nov 13 2013 John Doe <jdoe@example.com> - 4.1-5.20130314
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.