Red Hat Training
A Red Hat training course is available for RHEL 8
5.8. Perl スクリプトで RPM パッケージを処理する方法
RHEL 8 以降、Perl プログラミング言語はデフォルトの buildroot に含まれていません。そのため、Perl スクリプトを含む RPM パッケージは、RPM SPEC ファイルの BuildRequires:
ディレクティブを使用して、Perl の依存関係を明示的に指定する必要があります。
5.8.1. 一般的な Perl 関連の依存関係
BuildRequires:
で使用される Perl 関連のビルドの最も頻繁に発生する依存関係は、以下の通りです。
perl-generators
インストールした Perl ファイルのランタイム
Requires
とProvides
を自動的に生成します。Perl スクリプトまたは Perl モジュールをインストールする場合は、このパッケージにビルドの依存関係を含める必要があります。perl-interpreter
Perl インタープリターは、
perl
パッケージまたは%__perl
マクロから明示的に呼び出されるか、パッケージのビルドシステムの一部としてビルド依存関係として記載する必要があります。perl-devel
Perl ヘッダーファイルを提供します。XS Perl モジュールなどの
libperl.so
ライブラリーにリンクしているアーキテクチャー固有のコードを構築する場合は、BuildRequires: perl-devel
を含める必要があります。
5.8.2. 特定の Perl モジュールの使用
特定の Perl モジュールがビルド時に必要な場合は、以下の手順に従います。
手順
RPM SPEC ファイルに以下の構文を適用します。
BuildRequires: perl(MODULE)
注記この構文は Perl コアモジュールにも適用します。これは、
perl
パッケージを同時に移動し、タイムアウトするためです。
5.8.3. 特定の Perl バージョンへのパッケージの制限
パッケージを特定の Perl バージョンに限定するには、以下の手順に従います。
手順
RPM SPEC ファイルの希望のバージョン制約で
perl (:VERSION)
依存関係を使用します。たとえば、パッケージを Perl バージョン 5.22 以降に制限するには、以下を使用します。
BuildRequires: perl(:VERSION) >= 5.22
perl
パッケージのバージョンには、エポック番号が含まれるため、バージョンに対する比較は行わないでください。
5.8.4. パッケージが正しい Perl インタープリターを使用することを確認
Red Hat は、完全に互換性がない複数の Perl インタープリターを提供しています。そのため、Perl モジュールを提供するすべてのパッケージは、ビルド時に使用されたものと同じ Perl インタープリターをランタイムで使用する必要があります。
これを確認するには、以下の手順に従います。
手順
Perl モジュールを提供するすべてのパッケージについては、バージョン化された
MODULE_compat
Requires
を RPM SPEC ファイルに含めます。Requires: perl(:MODULE_COMPAT_%(eval `perl -V:version`; echo $version))