4 モジュールのビルド

この章では、DNFモジュールをビルドする方法について説明します。初期設定が必要であり、このプロセスは個々のソースRPMをビルドするよりも複雑です。これは、モジュールが多くのソース・コンポーネントと従属物で構成されている可能性があるためです。この章で示す手順では、モジュール・ビルド・サービスを使用して、Oracle Linux 8用に提供されているソース・パッケージからのモジュールのビルドを設定および開始する方法を説明します。

モジュール・ソース用のGitリポジトリの作成

MBSは、構造化されたGitリポジトリからソースを取得し、モジュール定義ファイルを使用して、特定のモジュール・ストリームおよびバージョンをビルドするためにどのソース・パッケージが必要かを正確に解決します。

この要件を容易にするには、次のことを実行する必要があります。

  • ビルドする予定のモジュールごとにGitリポジトリを設定します

  • そのモジュール内の様々なストリーム用に、各リポジトリ内にブランチを作成します

  • モジュール・パッケージのビルドに必要なソース・コードをそれらのブランチに移入します

モジュール・ソースのダウンロード

モジュール・ソースは、Oracle Linux yumサーバーからダウンロードできます。ただし、この作業のためには、必要なソース・パッケージを判断するためにさらに分析が必要になります。

dnf module listコマンドを実行することで、サブスクライブしているyumリポジトリ内にあるすべてのモジュールをリストできます。dnf module info module_name:stream コマンドを使用することで、モジュールおよびストリームの情報を確認できます。返される情報を特定のモジュール・ストリーム、バージョン、コンテキスト、アーキテクチャおよびプラットフォームのみに限定するには、完全なモジュール参照を使用します。たとえば、次のコマンドを実行すると、httpdモジュールの2.4ストリームのバージョン8030020200818000036の情報が表示されます。

dnf module info httpd:2.4:8030020200818000036
Name : httpd
Stream : 2.4 [d][a]
Version : 8030020200818000036
Context : 9edba152
Architecture : x86_64
Profiles : common [d], devel, minimal
Default profiles : common
Repo : ol8_appstream
Summary : Apache HTTP Server
Description : Apache httpd is a powerful, efficient, and extensible HTTP server.
Requires : platform:[el8]
Artifacts : httpd-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: httpd-devel-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: httpd-filesystem-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.noarch
: httpd-manual-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.noarch
: httpd-tools-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: mod_http2-0:1.15.7-2.module+el8.3.0+7816+49791cfd.x86_64
: mod_ldap-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: mod_md-1:2.0.8-8.module+el8.3.0+7816+49791cfd.x86_64
: mod_proxy_html-1:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: mod_session-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
: mod_ssl-1:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

なお、出力のArtifactsセクションには、そのモジュール用に入手可能なパッケージのリストが表示されます。

1つのソース・パッケージを使用して複数のバイナリ・パッケージをビルドできます。リストされた各バイナリ・パッケージについてどのソース・パッケージを使用するかを判別するには、dnf repoqueryコマンドを使用し、モジュラ・フィルタリングを無効にする必要があります。次に例を示します。

dnf repoquery httpd-filesystem-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.noarch --source -q --disable-modular-filtering
httpd-2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.src.rpm

そのモジュールについてyumサーバーから返された情報のArtifactsセクションにリストされたバイナリ・パッケージごとに、前述の問合せを繰り返します。

ダウンロードするすべてのソース・パッケージのリストがある場合は、ソース・パッケージのダウンロードに使用するダウンロードURLをyumサーバーに問い合せることができます。次に例を示します。

dnf repoquery httpd-2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.src --location -q --disable-modular-filtering
https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackageSource/httpd-2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.src.rpm

このコマンドから返されたURLを使用して、ソース・パッケージ・ファイルをダウンロードします。たとえば、次のようにcurlコマンドを使用してパッケージを現在のディレクトリにダウンロードします。

curl -O https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackageSource/httpd-2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.src.rpm

これらの手順を繰り返して、Oracle Linux yumサーバーから各ソース・パッケージをダウンロードします。

ヒント:

ソースをビルドする予定のモジュールが有効になっている場合は、次の例で示すように、bashの単純なループでこれらの手順の多くを自動化できます。

for bin in $(dnf module repoquery nginx:1.14 -q);
 do
 echo "Checking for sources in $bin"
 for src in $(dnf repoquery $bin --source -q);
  do
   echo "-- Checking source package $src"
   if [ ! -f $src ]
     then
      URL=$(dnf repoquery $(echo "${src%.*}") -q --location --disable-modular-filtering)
      echo "----> Downloading $URL"
      curl -O $URL;
   fi
  done
done

ビルド・システムでのモジュールの有効化は必ずしも望ましいことではなく、モジュールによっては、有効にすると意図しない競合が発生する可能性があります。このヒントは、自分のビルド環境、および何をビルドしようとしているのかを熟知しているユーザーを対象としています。

作業用modulemdの生成と必要なGitリポジトリの計画

モジュール構成は、モジュールのパッケージ化とビルドに必要なすべてのメタデータを含むYAML形式のmodulemdドキュメントで定義します。modulemdドキュメントの内容と形式の詳細は、https://docs.fedoraproject.org/en-US/modularity/policies/packaging-guidelines/を参照してください。

MBSは、モジュール・メタデータ構成により、そのモジュールのパッケージのビルドに使用するソース・ファイルへのアクセスに、どのGitリポジトリおよびブランチを使用するかを判断します。

verboseスイッチを指定してdnf module infoコマンド使用すると、モジュールのビルドに使用されたmodulemd情報を取得できます。次に例を示します。

dnf module info httpd:2.4:8030020200818000036 -v
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, 
  needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync
DNF version: 4.2.23
cachedir: /var/cache/dnf
User-Agent: constructed: 'libdnf (Oracle Linux Server 8.3; server; Linux.x86_64)'
repo: using cache for: ol8_developer_EPEL
ol8_developer_EPEL: using metadata from Fri 19 Feb 2021 09:56:59 PST.
repo: using cache for: ol8_baseos_latest
ol8_baseos_latest: using metadata from Tue 23 Feb 2021 11:19:55 PST.
repo: using cache for: ol8_appstream
ol8_appstream: using metadata from Tue 23 Feb 2021 11:49:55 PST.
repo: using cache for: ol8_codeready_builder
ol8_codeready_builder: using metadata from Tue 23 Feb 2021 11:50:47 PST.
repo: using cache for: ol8_distro_builder
ol8_distro_builder: using metadata from Tue 26 Jan 2021 14:36:37 PST.
repo: using cache for: ol8_UEKR6
ol8_UEKR6: using metadata from Tue 16 Feb 2021 09:29:11 PST.
Last metadata expiration check: 2:28:53 ago on Wed 24 Feb 2021 04:25:21 PST.
Completion plugin: Generating completion cache...
---
document: modulemd
version: 2
data:
  name: httpd
  stream: 2.4
  version: 8030020200818000036
  context: 9edba152
  arch: x86_64
  summary: Apache HTTP Server
  description: >-
    Apache httpd is a powerful, efficient, and extensible HTTP server.
  license:
    module:
    - MIT
    content:
    - ASL 2.0
  xmd:
    mbs:
      buildrequires:
        platform:
          context: 32e30060
          filtered_rpms: []
          ref: 
          stream: el8
          version: 20190214123456
      commit: 
      mse: TRUE
      rpms:
        httpd:
          ref: 36bae5ca8c2cfed909cbf9bb0d7d5100ae849344
        mod_http2:
          ref: 277d39ae32712ce196bf1dab8dbcc4e636cc0a44
        mod_md:
          ref: fe6eebe9285d77b75baa3da7c313fb16682eaf46
      scmurl: 
  dependencies:
  - buildrequires:
      platform: [el8]
    requires:
      platform: [el8]
  references:
    documentation: https://httpd.apache.org/docs/2.4/
    tracker: https://bz.apache.org/bugzilla/
  profiles:
    common:
      rpms:
      - httpd
      - httpd-filesystem
      - httpd-tools
      - mod_http2
      - mod_ssl
    devel:
      rpms:
      - httpd
      - httpd-devel
      - httpd-filesystem
      - httpd-tools
    minimal:
      rpms:
      - httpd
  api:
    rpms:
    - httpd
    - httpd-devel
    - httpd-filesystem
    - mod_ssl
  components:
    rpms:
      httpd:
        rationale: Apache httpd
        ref: stream-2.4-rhel-8.3.0
        buildorder: 10
        arches: [aarch64, i686, x86_64]
      mod_http2:
        rationale: HTTP/2 support for Apache httpd
        ref: stream-2.4-rhel-8.3.0
        buildorder: 20
        arches: [aarch64, i686, x86_64]
      mod_md:
        rationale: Certificate provisioning using ACME for Apache httpd
        ref: stream-2.4-rhel-8.3.0
        buildorder: 20
        arches: [aarch64, i686, x86_64]
  artifacts:
    rpms:
    - httpd-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - httpd-devel-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - httpd-filesystem-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.noarch
    - httpd-manual-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.noarch
    - httpd-tools-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - mod_http2-0:1.15.7-2.module+el8.3.0+7816+49791cfd.x86_64
    - mod_ldap-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - mod_md-1:2.0.8-8.module+el8.3.0+7816+49791cfd.x86_64
    - mod_proxy_html-1:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - mod_session-0:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
    - mod_ssl-1:2.4.37-30.0.1.module+el8.3.0+7816+49791cfd.x86_64
...

なお、この出力で示されているmodulemdコンテンツは、ビルド・アーティファクトを追加で含んでいるため、変更せずにMBSで直接使用することはできません。このコンテンツを使用できるようにするには、YAMLコンテンツ内のいくつかのキーを削除する必要があります(xmdおよびartifactsエントリなど)。dnf module infoによる出力においては、---がある行以降がYAMLコンテンツであることを覚えておいてください。

dnf module info問合せからの出力を保存し、それを手動で編集して作業用のmodulemdファイルを生成できます。または、このコマンドの出力を保存し、convert_repodata_modulemd.pyスクリプト(oracle-mbs-toolsパッケージ内にある)によってそれを実行して自動的に解析し、作業用のYAML modulemdビルド構成ファイルを生成できます。次に例を示します。

dnf module info httpd:2.4:8030020200818000036 -v | convert_repodata_modulemd.py -i
ls *.yaml
httpd-2.4-8030020200818000036-9edba152.yaml

なお、同じモジュールの既存のバージョンはビルトできないため、modulemd構成ファイル内でバージョン番号を変更する必要がある場合があります。モジュールの一般的なバージョン・ラベルには、次の規則が使用されます。

<ディストリビューション・バージョン><更新レベル><オプションのモジュール・バージョン><日付と時刻>

そのため、2021年4月12日15時30分22秒にビルドされた、バージョンが01のOracle Linux 8.3からのモジュールの場合、バージョンは8030120210412153022になります。

modulemd YAMLファイルを使用する前に、それが有効であることを必ず確認する必要があります。有効性を確認するには、modulemd-validatorコマンドを使用します。たとえば、次を実行します。

modulemd-validator httpd-2.4-8030020200818000036-9edba152.yaml

modulemd YAMLファイル内の次の情報は注目に値します。これらの項目では、どのようにソースをGitから取得するか、およびモジュールを正常にビルドできるようにするために実行する必要がある手順が示されています。

  • dependencies/buildrequires: モジュールをビルドできるようにするには、すべてのビルド依存関係を満たしている必要があります。特に、buildrequiresエントリの下にリストされたモジュールは、ローカル・ビルドを続行する前にビルドして使用可能にする必要があります。特定のモジュールをビルドすることのみに関心があり、ビルド時にこれらのビルド依存関係を満たすことができる場合、MBSは、必要に応じて構成済yumリポジトリからモジュールを取得できます。

  • components/rpms: コンポーネントRPMの名前はそれぞれ、MBSの構成で指定されているベースURLで、ソースがあるGitリポジトリの名前を定義するために使用されます。refパラメータにより、modulemdファイル内で定義されている特定のモジュール・ストリームに対して正しいRPMパッケージをビルドするために使用する必要があるブランチを示します。

modulemd YAMLファイルでcomponents:rpmsエントリを探します。コンポーネントRPMのエントリはそれぞれ、Gitリポジトリを表し、対応するソース・パッケージに結び付いています。RPMごとに指定されているrefエントリにより、Gitリポジトリ内のブランチ名を定義します。たとえば、前述の出力では、httpd:2.4:8030020200818000036モジュールには、httpdmod_http2およびmod_mdという3つのGitリポジトリのそれぞれの、stream-2.4-rhel-8.3.0ブランチにあるソースが使用されています。

この情報を使用して、ビルドする予定の各モジュールおよびストリームのmodulemd構成情報によって必要とされるとおりに、対応するGitリポジトリおよびブランチを計画します。

ソースのGitリポジトリおよびブランチの作成

MBSは、Gitを使用して、使用するソースを抽出します。Gitリポジトリはリモートまたはローカルのどちらかに配置できますが、どちらの場合も、MBSで使用するには、ソースを格納できるようにGitを設定する必要があります。ここでは、両方の方法について説明します。ダウンロードしたソース・コンポーネントごとに、別個のGitリポジトリを作成する必要があります。ソースRPMごとに、示した手順を繰り返します。

リモートのGitリポジトリ

リモートGitサービスを使用する場合は、サービス・プロバイダから提供されるツールを使用することで、ダウンロードした各ソースRPMのコンポーネント・ソース・コードをホストする、対応するリポジトリを作成する必要があります。リポジトリ名がコンポーネント・ソースRPMの名前と一致する必要があります。

ソースをリモートGitリポジトリにインポートします。

  1. modulemd内で定義されているソース・コンポーネントRPMと同じ名前を付けて、Gitリポジトリをクローニングします。

    git clone git@git_server_URL:repository path/component.git
    cd component                    
  2. modulemd内のコンポーネントRPM用のストリームrefエントリと一致するブランチをチェックアウトします。

    git checkout ref                           

    ブランチがまだ存在しない場合は、次のようにしてローカル・ブランチを作成できます。

    git checkout -b ref                           
  3. 次のように、ソース・パッケージを作業ディレクトリに抽出します。

    rpm2cpio /path/to/component.src.rpm | cpio -di
  4. 次のように、ソースをGitに追加し、それらをリモート・サーバーにプッシュします。

    git add *
    git commit -m "Import sources for component"
    git push

    新しいローカル・ブランチを作成しそこで作業する必要がある場合は、ソースをリモート・サーバーにプッシュするときに、対応するブランチにそのソースが格納されていることを確認する必要があります。

    git push --set-upstream origin ref                           
ローカルのGitリポジトリ

ローカルにあるGitリポジトリ上でソースをホストすることにした場合は、各モジュールのmodulemdファイル内で再構成が必要になります。

  1. 次のように、ソース・パッケージのコンテンツを、modulemd内で定義されているソース・コンポーネントRPMと同じ名前が付いた空のディレクトリに抽出します。

    $ mkdir component                           
    $ cd component                           
    rpm2cpio /path/to/component.src.rpm | cpio -di
  2. ローカルGitリポジトリを初期化します

    git init
  3. ファイルを追加しコミットします

    git add *
    git commit -m "Import sources for component"
  4. このモジュールのmodulemdファイルを変更して、作成した新しいローカル・リポジトリのパスを指すようにrefエントリを置き換えます。たとえば、次のようにエントリを変更します。

    components:
        rpms:
          httpd:
            rationale: Apache httpd
            ref: stream-2.4-rhel-8.3.0
            buildorder: 10
            arches: [aarch64, i686, x86_64]

    変更後:

    components:
        rpms:
          httpd:
            rationale: Apache httpd
            repository: file:///home/build/httpd
            buildorder: 10
            arches: [aarch64, i686, x86_64]

    repositoryエントリで、このソース・コンポーネントRPM用に作成したリポジトリの正しい場所へのファイル・パスが指定されていることを確認します。

    ビルドするモジュールのローカル・リポジトリ・ソースと一致するように、modulemd内のすべてのrefエントリを編集する必要があります。

リモート・ソース・リポジトリ用のMBSの構成

MBSは、Gitリポジトリからソースを自動的に取得し、modulemd定義ドキュメントを分析して、そのソース・コードの特定のバージョンのビルドに使用する必要があるリポジトリおよびブランチを判断します。詳細は、「作業用modulemdの生成と必要なGitリポジトリの計画」を参照してください。リモートでホストされているGitサービスを使用してソースをホストすることにした場合は、リポジトリがホストされているベースURLについてMBSを構成する必要があります。ベースURLは、/etc/module-build-service/config.pyファイル内のBaseConfigurationクラスで、RPMS_DEFAULT_REPOSITORYパラメータを使用して定義します。パッケージで提供されるデフォルトURLは、https://exampledomain/default-rpm-repositories/に設定されています。このデフォルト値を、モジュラRPMパッケージのソースにアクセスできる、有効なGitサービスの場所に置き換えます。Gitリポジトリを同じサーバー上のローカルでホスティングしており、これについてmodulemdファイルを編集してある場合は、このパラメータを編集する必要はありません。

MBSはソースへのアクセスにGitなどのソース制御管理機能を使用するため、ソースにアクセスしてパッケージのビルド・ルートにダウンロードするためのコマンドが提供されるように、パラメータDISTGITSを追加で設定します。この構成で提供されるデフォルト値は、このドキュメントに記載されている手順で正しく動作します。

リモートGitリポジトリを使用するようにMBSを構成するには、/etc/module-build-service/config.pyファイルを編集し、構成内のBaseConfigurationクラスの下の次の行を変更します。

RPMS_DEFAULT_REPOSITORY = 'https://exampledomain/default-rpm-repositories/'

モジュール・ビルド・サービスのMockの構成

MBSの使用によるパッケージのビルドを開始する前に、Mockビルド・ツール用の構成を確認して更新する必要があります。このツールは、ソース・パッケージをそれらに相当するバイナリにビルドするためにMBSで使用されます。MBS内からMockがトリガーされたときにMockによって使用されるグローバル構成ファイルは、/etc/module-build-service/mock.cfgにあります。

特に、この構成では、ビルド・プロセスの間にビルド依存関係またはビルド要件を解決するために使用される、様々なyumリポジトリについて設定します。ビルドはchroot環境内で実行されるため、このyum構成は、MBSが実行されているホスト・システムからは分離されています。

パッケージ内には動作する構成例が用意されており、この構成では、一般的に必要となるyumリポジトリが使用可能になります。必要に応じて、追加のリポジトリ用にこのファイルを編集できます。

参考のために、構成ファイルの内容を次に示します。

config_opts['root'] = '$root'
config_opts['target_arch'] = '$arch'
config_opts['legal_host_arches'] = ('$arch',)
config_opts['chroot_setup_cmd'] = 'install oraclelinux-release bash bzip2 coreutils cpio diffutils findutils gawk gcc\
  gcc-c++ grep gzip info make patch redhat-rpm-config rpm-build sed yum shadow-utils tar unzip util-linux\
  which xz $group'
config_opts['rpmbuild_networking'] = True
config_opts['use_host_resolv'] = True
config_opts['use_nspawn'] = False
config_opts['dist'] = 'el8'
config_opts['dnf_vars'] = $dnf_vars
config_opts['releasever'] = '$releasever'
config_opts['module_enable'] = $enabled_modules
config_opts['use_bootstrap_container'] = False

config_opts['yum.conf'] = """

$yum_conf

[ol8_baseos_latest]
name=Oracle Linux 8 BaseOS Latest ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/baseos/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol8_appstream]
name=Oracle Linux 8 Application Stream ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/appstream/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol8_codeready_builder]
name=Oracle Linux 8 CodeReady Builder ($basearch) - Unsupported
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/codeready/builder/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol8_distro_builder]
name=Oracle Linux 8 Distro Builder ($basearch) - Unsupported
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/distro/builder/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol8_developer_EPEL]
name=Oracle Linux $releasever EPEL Packages for Development ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/developer/EPEL/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

"""

ビルドのトリガー

モジュラ・ビルドは、mbs-manager build_module_locallyコマンドを使用してトリガーします。このコマンドには、ビルド・プロセスの動作を説明する複数のコマンドライン・オプションを指定する必要があります。次の例では、389-ds:1.4モジュールおよびストリームのパッケージのビルドを示します。

mbs-manager build_module_locally --offline --stream 1.4 \
  --add-local-build nodejs:10:20210206155331 --file 389-ds-stream-1.4.yaml

この例でのコマンドライン・スイッチの説明を次に示します。

  • --offline: このオプションは必須であり、これを指定すると、MBSでオフライン・モードでのビルドが可能になるように、ビルド・システムでローカルに提供されるビルド・パッケージ要件が使用されます。

  • --stream: このオプションにより、ビルドするモジュールのストリームを指定します。オラクル社が提供するモジュール定義ファイルでは各modulenmdファイル内のストリームが指定されていますが、このコマンドの実行時にストリームを指定する必要があります。これは、このオプションで使用される値がビルド・プロセスの間にファイル・パス・ネーミングに使用されるためです。

  • --add-local-build: このオプションは、modulemd YAMLファイル内で定義されているローカル・ビルド要件を参照する必要がある場合のみ必要です。ビルド要件はmodule_name:stream:versionという形式で指定します。このオプションを省略すると、MBSは、必要なモジュール従属物を構成済yumリポジトリから取得します。ビルド要件にローカル・ビルドを指定する場合は、ビルドが~/modulebuild/builds/内に存在する必要があります。

  • --file: ビルドするモジュールのmodulemd YAMLファイルへのパス。

ビルド・ログおよび最終的なビルド・パッケージは、~/modulebuild/builds/module-module_name-stream-version/results/にあります。

モジュール・ビルドのテスト

~/modulebuild/builds/module-module_name-stream-version/results/内の各モジュール・ビルドは、そのモジュールのパッケージにアクセスできるローカルのyumリポジトリを提供するような方法で構造化されています。そのため、モジュール・ビルドをテストするには、ローカルのyumリポジトリを構成してから、dnfコマンドを使用してモジュールを問合せできるかどうかを試します。

たとえば、次のようなyumリポジトリ構成を/etc/yum.repos.d/local.repoに作成します。

[local_mbs_repo]
name=Local MBS Repository
baseurl=file:///home/user/modulebuild/builds/module-module_name-stream-timestamp/results/
gpgcheck=0
enabled=1

この例では、usermodule_namestreamおよびtimestamp変数を、テストする環境に適した値に置き換えることになります。

次のdnfコマンドを実行して、モジュール情報が正しいことと、モジュール・ストリームのパッケージをインストールできることを検証します。

sudo dnf module list
sudo dnf module install module_name:stream