22.3.3. その他の主な変更点
RHEL 9 と RHEL 10 の間で RPM に加えられた最も顕著な変更点を説明します。
- ユーザー名とグループ名の解決が厳密にローカルになる
パッケージをインストールするときに、RPM は、Name Service Switch (NSS) を使用するのではなく、ローカルシステムの
passwd(5)とgroup(5)ファイルからそれぞれユーザーとグループに関する情報を取得するようになりました。パッケージをビルドするときに、
%defattrディレクティブは、実際の所有権に関する情報をディスクから取得する代わりに、ユーザーおよびグループ属性のダッシュ (-) プレースホルダーをrootとして解釈するようになりました。同様に、specファイル、ソースアーカイブ、パッチファイルなどのソース RPM パッケージ内のファイルは、ディスク上の所有権に関係なく、常に root ユーザーとグループによって所有されるようになりました。- ビルドの成功後、ビルドツリー (
%_builddir) がデフォルトで削除されるようになる -
以前は、
rpmbuild(8)は-bbなどのより一般的に使用されるモードではなく、--rebuildモードでのみビルドディレクトリーをクリーンアップしました。その結果、複数のパッケージがビルドされ、時間の経過とともに不要なファイルが蓄積されるようになりました。この機能拡張により、致命的ではないビルドの問題を調査するなど、ビルドツリーを常に保持したい場合は、--nocleanオプションを使用できます。 %patchディレクティブは、適用するパッチ番号を明示的に指定する必要があるパッチ番号は次のいずれかの方法で指定できます。
-
-Pオプションを使用すると、たとえば%patch -P1 -P2のようにパッチ番号 1 と 2 を適用できます。 -
パッチ番号を位置引数として渡すと、たとえば、
%patch 1 2のようにパッチ番号 1 と 2 が適用されます。
重要%patchN構文 (Nは適用するパッチ番号) は非推奨となりました。注記%patchディレクティブで明示的なパッチ番号が指定されていない場合、ビルドはエラーで終了します。注記%patchディレクティブを使用して個々のパッチを手動で適用するのではなく、可能な限り%autosetupマクロを使用することを推奨します。%autosetupを使用すると、パッチはパッチ番号で識別される順序で自動的に適用されます。その結果、specファイルの読み取りと保守が容易になります。詳細は、パッチ適用の自動化 を参照してください。-