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
モジュールには、httpd
、mod_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リポジトリにインポートします。
-
modulemd内で定義されているソース・コンポーネントRPMと同じ名前を付けて、Gitリポジトリをクローニングします。
git clone git@git_server_URL:repository path/component.git
cd component
-
modulemd内のコンポーネントRPM用のストリームrefエントリと一致するブランチをチェックアウトします。
git checkout ref
ブランチがまだ存在しない場合は、次のようにしてローカル・ブランチを作成できます。
git checkout -b ref
-
次のように、ソース・パッケージを作業ディレクトリに抽出します。
rpm2cpio /path/to/component.src.rpm | cpio -di
-
次のように、ソースをGitに追加し、それらをリモート・サーバーにプッシュします。
git add *
git commit -m "Import sources for component"
git push
新しいローカル・ブランチを作成しそこで作業する必要がある場合は、ソースをリモート・サーバーにプッシュするときに、対応するブランチにそのソースが格納されていることを確認する必要があります。
git push --set-upstream origin ref
ローカルのGitリポジトリ
ローカルにあるGitリポジトリ上でソースをホストすることにした場合は、各モジュールのmodulemdファイル内で再構成が必要になります。
-
次のように、ソース・パッケージのコンテンツを、modulemd内で定義されているソース・コンポーネントRPMと同じ名前が付いた空のディレクトリに抽出します。
$ mkdir component
$ cd component
rpm2cpio /path/to/component.src.rpm | cpio -di
-
ローカルGitリポジトリを初期化します
git init
-
ファイルを追加しコミットします
git add *
git commit -m "Import sources for component"
-
このモジュールの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
この例では、user、module_name、streamおよびtimestamp変数を、テストする環境に適した値に置き換えることになります。
次のdnfコマンドを実行して、モジュール情報が正しいことと、モジュール・ストリームのパッケージをインストールできることを検証します。
sudo dnf module list
sudo dnf module install module_name:stream