5.6. RPM の一般的なエラーのチェック
パッケージを作成したら、パッケージの品質を確認することを推奨します。パッケージの品質をチェックするための主なツールは rpmlint です。
rpmlint ツールを使用すると、次のアクションを実行できます。
- RPM の保守性を向上する。
- RPM の静的分析を実行してコンテンツの検証を可能にする。
- RPM の静的分析を実行してエラーチェックを可能にする。
rpmlint では、バイナリー RPM、ソース RPM (SRPM)、および spec ファイルをチェックできます。したがって、このツールはパッケージ化のすべての段階で役立ちます。
rpmlint のガイドラインは厳密なものです。したがって、次のセクションに示すように、一部のエラーと警告をスキップすることが許容される場合もあります。
以下のセクションで説明する例では、rpmlint にオプションを指定せずに実行しており、詳細な出力が得られません。各エラーまたは警告の詳細な説明は、代わりに rpmlint -i を実行してください。
5.6.1. サンプル Bash プログラムで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、bello spec ファイル、bello SRPM、bello バイナリー RPM の例を使用して、RPM の一般的なエラーをチェックするときに発生する可能性のある警告とエラーを調査します。
5.6.1.1. bello spec ファイルで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、bello spec ファイルで一般的なエラーをチェックする方法を確認してください。
bello spec ファイルで rpmlint コマンドを実行した場合の出力
$ rpmlint bello.spec
bello.spec: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.
bello.spec の場合、invalid-url Source0 という警告が 1 つだけ出力されます。この警告は、Source0 ディレクティブにリストされている URL にアクセスできないことを意味します。example.com URL は存在しないため、この出力は当然です。この URL が今後有効になると仮定して、この警告を無視します。
5.6.1.2. bello SRPM の一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、bello ソース RPM (SRPM) で一般的なエラーをチェックする方法を確認してください。
bello SRPM で rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/SRPMS/bello-0.1-1.el9.src.rpm
bello.src: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.src: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.
bello SRPM の場合、invalid-url URL 警告が出力されます。これは、URL ディレクティブで指定された URL にアクセスできないことを意味します。この URL が今後有効になると仮定して、この警告を無視します。
5.6.1.3. bello バイナリー RPM で一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
バイナリー RPM をチェックする場合、rpmlint コマンドは次の項目をチェックします。
- ドキュメント
- man ページ
- ファイルシステム階層規格の一貫した使用
次の例の出力を調べて、bello バイナリー RPM で一般的なエラーをチェックする方法を確認してください。
bello バイナリー RPM で rpmlint コマンドを実行した結果の出力
$ rpmlint ~/rpmbuild/RPMS/noarch/bello-0.1-1.el9.noarch.rpm
bello.noarch: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.noarch: W: no-documentation
bello.noarch: W: no-manual-page-for-binary bello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.
no-documentation および no-manual-page-for-binary という警告は、ユーザーがドキュメントや man ページを提供しなかったため、RPM にドキュメントや man ページがないことを意味します。出力の警告を別にすれば、RPM は rpmlint チェックに合格しています。
5.6.2. サンプル Python プログラムで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、pello spec ファイル、pello SRPM、pello バイナリー RPM の例を使用して、RPM の一般的なエラーをチェックするときに発生する可能性のある警告とエラーを調査します。
5.6.2.1. pello spec ファイルで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、pello spec ファイルで一般的なエラーをチェックする方法を確認してください。
pello spec ファイルで rpmlint コマンドを実行した場合の出力
$ rpmlint python-pello.spec
0 packages and 1 specfiles checked; 0 errors, 0 warnings.
python-pello spec ファイルの場合、rpmlint ユーティリティーはエラーや警告をまったく検出しませんでした。これは、ファイルが正しく作成されたことを意味します。
実稼働環境で使用するパッケージの場合は、spec ファイルでエラーや警告がないか適切に確認してください。
5.6.2.2. pello SRPM の一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、pello ソース RPM (SRPM) で一般的なエラーをチェックする方法を確認してください。
pello の SRPM で rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/SRPMS/python-pello-1.0.2-1.el9.src.rpm
python-pello.src: E: description-line-too-long C Pello is an example package with an executable that prints Hello World! on the command line.
1 packages and 0 specfiles checked; 1 errors, 0 warnings.
description-line-too-long というエラーは、指定した説明が許容文字数を超えていることを意味します。
出力エラーを除けば、SRPM は rpmlint チェックに合格しています。
5.6.2.3. pello バイナリー RPM で一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
バイナリー RPM をチェックする場合、rpmlint コマンドは次の項目をチェックします。
- ドキュメント
- man ページ
- ファイルシステム階層規格の一貫した使用
次の例の出力を調べて、pello バイナリー RPM で一般的なエラーをチェックする方法を確認してください。
pello バイナリー RPM で rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/RPMS/noarch/python3.12-pello-1.0.2-1.el9.noarch.rpm
pello-1.0.2-1.el9.noarch.rpm
python3.12-pello.noarch: E: description-line-too-long C Pello is an example package with an executable that prints Hello World! on the command line.
python3.12-pello.noarch: W: no-manual-page-for-binary pello_greeting
1 packages and 0 specfiles checked; 2 errors, 1 warnings.
-
no-manual-page-for-binaryという警告は、man ページが指定されなかったため、RPM に man ページがないことを意味します。 -
description-line-too-longというエラーは、指定した説明が許容文字数を超えていることを意味します。
出力の警告とエラーを別にすれば、RPM は rpmlint チェックに合格しています。
5.6.3. サンプル C プログラムで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、cello spec ファイル、cello SRPM、cello バイナリー RPM の例を使用して、RPM の一般的なエラーをチェックするときに発生する可能性のある警告とエラーを調査します。
5.6.3.1. cello spec ファイルで一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、cello spec ファイルで一般的なエラーをチェックする方法を確認してください。
cello spec ファイルで rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/SPECS/cello.spec
/home/admiller/rpmbuild/SPECS/cello.spec: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.
cello.spec の場合、invalid-url Source0 という警告が 1 つだけ出力されます。この警告は、Source0 ディレクティブにリストされている URL にアクセスできないことを意味します。example.com URL は存在しないため、この出力は当然です。この URL が今後有効になると仮定して、この警告を無視します。
5.6.3.2. cello SRPM の一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
次の例の出力を調べて、cello ソース RPM (SRPM) で一般的なエラーをチェックする方法を確認してください。
cello SRPM で rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/SRPMS/cello-1.0-1.el9.src.rpm
cello.src: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.src: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.
cello SRPM については、invalid-url URL という警告があります。この警告は、URL ディレクティブで指定された URL に到達できないことを意味します。この URL が今後有効になると仮定して、この警告を無視します。
5.6.3.3. cello バイナリー RPM で一般的なエラーをチェックする リンクのコピーリンクがクリップボードにコピーされました!
バイナリー RPM をチェックする場合、rpmlint コマンドは次の項目をチェックします。
- ドキュメント
- man ページ
- ファイルシステム階層規格の一貫した使用
次の例の出力を調べて、cello バイナリー RPM で一般的なエラーをチェックする方法を確認してください。
cello バイナリー RPM で rpmlint コマンドを実行した場合の出力
$ rpmlint ~/rpmbuild/RPMS/x86_64/cello-1.0-1.el9.x86_64.rpm
cello.x86_64: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.x86_64: W: no-documentation
cello.x86_64: W: no-manual-page-for-binary cello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.
no-documentation および no-manual-page-for-binary という警告は、ドキュメントや man ページが指定されていないため、RPM にドキュメントや man ページがないことを意味します。
出力の警告を別にすれば、RPM は rpmlint チェックに合格しています。