検索

第4章 Red Hat Software Collections の再構築

download PDF
本章では、Red Hat Software Collections オファリングの一部である Software Collections の一部を拡張する方法を説明します。

4.1. scldevel サブパッケージの提供

scldevel サブパッケージの目的は、多くの汎用マクロファイルを提供することにより、依存する Software Collections の作成プロセスを簡素化することです。パッケージャーは、既存の Software Collections を拡張するときにこれらのマクロファイルを使用します。scldevel は、Software Collection メタパッケージのサブパッケージとして提供されます。

4.1.1. scldevel サブパッケージの作成

次のセクションでは、ruby193 および ruby200 の 2 つの例の Ruby Software Collections の scldevel サブパッケージを作成する方法を説明します。

手順4.1 独自の scldevel サブパッケージを提供

  1. Software Collection のメタパッケージで、名前、要約、および説明を定義して scldevel サブパッケージを追加します。
    %package scldevel
    Summary: Package shipping development files for %scl
    Provides: scldevel(%{scl_name_base})
    
    %description scldevel
    Package shipping development files, especially useful for development of
    packages depending on %scl Software Collection.
    依存する Software Collections のパッケージを構築する際には、仮想 Provides: scldevel(%{scl_name_base}) を使用することが推奨されます。これにより、以下の手順で指定されているように、%{scl_name_base} Software Collection とそのマクロのバージョンが利用できるようになります。
  2. Software Collection のメタパッケージの %install セクションで、scldevel サブパッケージに含まれる macros.%{scl_name_base}-scldevel ファイルを作成し、以下を追加します。
    cat >> %{buildroot}%{_root_sysconfdir}/rpm/macros.%{scl_name_base}-scldevel << EOF
    %%scl_%{scl_name_base} %{scl}
    %%scl_prefix_%{scl_name_base} %{scl_prefix}
    EOF
    同じ %{scl_name_base} 名を共有するすべての Software Collections の間で、提供される macros.%{scl_name_base}-scldevel ファイルが競合する必要があることに注意してください。これにより、複数のバージョンの %{scl_name_base} Software Collections のインストールは許可されません。たとえば、ruby193-scldevel サブパッケージがインストールされている場合は、ruby200-scldevel サブパッケージをインストールすることができません。

4.1.2. 依存する Software Collection での scldevel サブパッケージの使用

ruby200 Software Collection に依存する Software Collection で scldevel サブパッケージを使用するには、以下のように、依存する Software Collection のメタパッケージを更新します。

手順4.2 依存するソフトウェアコレクションで独自の scldevel サブパッケージの使用

  1. メタパッケージの spec ファイルの最初に以下を追加することを検討してください。
    %{!?scl_ruby:%global scl_ruby ruby200}
    %{!?scl_prefix_ruby:%global scl_prefix_ruby %{scl_ruby}-}
    これら 2 行は任意です。これは、依存する Software Collection が ruby200 Software Collection に依存するように設計されている視覚的なヒントとしてのみ意図されています。ビルドルートで利用できる scldevel サブパッケージが他にない場合は、ruby200-scldevel サブパッケージがビルド要件として使用されます。
    これらの行を以下の行に置き換えることができます。
    %{?scl_prefix_ruby}
  2. 以下のビルド要件をメタパッケージに追加します。
    BuildRequires: %{scl_prefix_ruby}scldevel
    このビルド要件を指定すると、scldevel サブパッケージがビルドルートにあり、デフォルト値が使用されていないことを確認します。このパッケージを省略すると、後続のパッケージのビルド時間で要求が破損する可能性があります。
  3. メタパッケージの spec ファイルの %package runtime に以下の行が含まれていることを確認します。
    %package runtime
    Summary: Package that handles %scl Software Collection.
    Requires: scl-utils
    Requires: %{scl_prefix_ruby}runtime
  4. メタパッケージの spec ファイルの %package build に、以下の行を含めることを検討してください。
    %package build
    Summary: Package shipping basic build configuration
    Requires: %{scl_prefix_ruby}scldevel
    Requires: %{scl_prefix_ruby}scldevel を指定すると、Software Collection のすべてのパッケージでマクロが利用可能になります。
    これを追加することは、依存する Software Collection のパッケージが scldevel サブパッケージが提供するマクロを使用するなど、特定のユースケースで Requires のみ有効であることに注意してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.