1 ソース・パッケージのビルドについて
この章では、バイナリRPMパッケージとしてのソース・パッケージのビルドおよびパッケージ化について概要を示します。標準的な非モジュラ・ソース・パッケージのビルドと、複数のDNFモジュール内およびストリーム内に分散されているソースのビルドには違いがあります。ソース・パッケージの入手方法についても説明します。
注意:
このドキュメントでは、Oracle Linux 8用のソース・パッケージをバイナリRPMパッケージとしてビルドおよびパッケージ化してソースからOracle Linux 8に効率的にブートストラップを実行する方法を示します。ここで示す情報は、開発者向けに、Oracle Linux 8用のソース・コードをビルドおよびパッケージ化する方法をわかりやすくするために提供されています。Oracleでは、外部でビルドされたパッケージはサポートされていません。このドキュメントでの説明は、示されているインフラストラクチャのサポートも、パッケージ・ビルド・プロセスのサポートも意味していません。
ソースRPMSについて
Oracle Linuxパッケージのソースはすべて、Oracle Linux yumサーバーおよびULNで入手できます。どのパッケージについても、関連するソースRPMをダウンロードし、rpmbuildユーティリティの使用によって、相当するバイナリを再ビルドできます。ソースRPMパッケージにはソース・コードが含まれており、これはTAR書庫として提供されます。また、ビルド中にOracleによって適用される可能性があるその他のパッチ、および重要なビルド情報を提供するSPECファイルも含まれています。このファイルには、パッケージのビルドに必要なビルド依存関係のリスト、およびパッケージ・ビルド・プロセスの様々な段階で実行する必要があるアクションについてのビルド指示が含まれています。
ソース・パッケージの入手は簡単です。dnf downloadコマンドを使用することで、ビルドする各ソース・パッケージを手動でダウンロードできます。たとえば、Oracle Linux 8に付属しているUEKパッケージの最新のソース・パッケージをダウンロードするには、次を実行します。
sudo dnf download --source kernel-uek
なお、ソースRPMパッケージがモジュールとしてリリースされている場合は、dnf downloadコマンドの使用によってそのパッケージをダウンロードすると、いくつかの問題が発生する可能性があります。必要に応じて、ソース・パッケージを手動で直接https://yum.oracle.com/oracle-linux-8.htmlからダウンロードできます。
モジュラ・パッケージは、メタデータ、およびそのモジュールの一部であるパッケージについての情報を含んでおり、モジュラRPMリポジトリにあります。このリポジトリには、入手可能なモジュールおよびストリームについて詳細情報を提供するYAMLファイルが含まれています。dnf downloadコマンドの使用によってモジュラ・パッケージのソースを直接ダウンロードすることはできません。モジュラ・パッケージのダウンロードの詳細は、「モジュール・ソースのダウンロード」を参照してください。
DNFのモジュール性の詳細は、『Oracle® Linux: Oracle Linuxでのソフトウェアの管理』を参照してください。
大部分のパッケージをソースから直接ビルドする予定の場合は、それらのパッケージが存在するyumリポジトリまたはULNチャネルのミラーを作成することを検討してください。Oracle Linux 8システムでは、次のコマンドを実行することで、ご使用のシステムでサブスクライブしているすべてのリポジトリまたはチャネルのミラーを、簡単に作成できます。
mkdir source_rpms
sudo dnf reposync --source -p source_rpms
前述のコマンドでは、システムでサブスクライブしているすべてのリポジトリ内の、すべてのパッケージのすべてのソースがダウンロードされます。これらのソースRPMパッケージをホストしているファイル・システムに、これらのパッケージを格納するための十分な領域があることを確認する必要があります。dnf repolist -vを実行することで、各リポジトリで使用される領域の量を確認できます。
モジュラ・パッケージの場合、dnf reposyncコマンドでは、定義されたモジュール・ストリームごとにソースRPMパッケージがダウンロードされます。つまり、同じソース・パッケージの複数のバージョンがリポジトリ・ミラー内に存在する可能性があるということです。
RPMのパッケージ化の形式の詳細は、https://rpm.org/documentationを参照してください。RPMのパッケージ化の詳細なガイドについては、https://rpm-packaging-guide.github.io/を参照してください。
モジュール・ビルド・サービスについて
モジュール・ビルド・サービス(MBS)は、DNFモジュール専用のビルド・ジョブを調整するビルド管理ユーティリティです。このユーティリティでは、次のことのためのインタフェースが提供されます。
-
クライアント側ツールの管理、
-
各モジュールのビルド構成の検証、
-
適切なビルド環境の設定、
-
ビルドのスケジューリング、トラッキングおよびレポート作成の操作。
アップストリーム・プロジェクトはhttps://pagure.io/fm-orchestratorでホストされています。
Mockビルド・ツールは、ソース・パッケージのビルドを容易にするためにMBS内で使用されます。Mockは、chroot環境内のソースRPMパッケージをビルドします。このツールは、単に環境を設定し、構成ファイルの内容に基づいてそれにデータを移入します。その後、ソースRPMパッケージをchroot環境内でビルドし、RPMバイナリとしてパッケージ化します。Mockビルド・ツールをMBS内でスレッド化することで、パフォーマンスが向上し、並行での多数のモジュールのビルドが迅速化されます。
MBS用のパッケージとその従属物は開発者リポジトリ内に用意されています。これらのパッケージには、オラクル社が提供するソースからモジュールを直接ビルドする際に役立つ初期構成が含まれています。