Red Hat Enterprise Linux 8: アプリケーションの互換性ガイド
Red Hat Enterprise Linux 8:
アプリケーション互換性ガイド
2019 年 5 月
注記: この記事では、Red Hat Enterprise Linux 8 のアプリケーションの互換性について説明しています。 Red Hat Enterprise Linux 7 については、Red Hat Enterprise Linux 7: アプリケーションの互換性ガイド を参照してください。
目次
エグゼクティブサマリー
このガイドは、Red Hat® Enterprise Linux® プラットフォームの複数のリリース間におけるサードパーティーアプリケーションのサポートに関する Red Hat のガイドラインで、ソフトウェア開発者を対象としています。 ISV およびお客様は、アプリケーション開発時にこのガイドラインに従うことで、Red Hat® Enterprise Linux® のメジャーバージョンとマイナーバージョン間の移行時に発生するアプリケーションの問題を軽減または回避できます。
このガイドでは、Red Hat® Enterprise Linux® リリース間で互換性を提供することを目的とするシステムのアプリケーションプログラミングインターフェイス (API) と、アプリケーションバイナリーインターフェイス (ABI) の推奨される使用方法について説明します。 また、アプリケーションの互換性の有無を規定する階層型フレームワークについて概説します。
概要
このドキュメントは、RHEL 用に作成されたアプリケーションとライブラリーの安定性に関するガイダンスを提供し、RHEL の新しいリリースで実行することを目的としています。 また、主にソフトウェアの後方互換性の問題に焦点を当てています。 後方互換性を目的としていますが、新機能の開発や、セキュリティー上の懸念により、実現が難しい場合があります。 したがって、ガイドラインおよび公開されているポリシーは、可能な限り最も競争力があり、安全で、有能なシステムをお客様に提供するという目的に従って変更される場合があります。状況に応じてテストを行うことが常に推奨されます。
この互換性ガイドラインについて、さらに明確な説明が必要な場合は、Red Hat 担当者にお問い合わせください。
用語
以下は、このドキュメントで使用される基本的な用語です。
-
アプリケーションプログラミングインターフェイス (API)
API は、パブリックインターフェイスで、オペレーティングシステムコンポーネントを含む他のソフトウェアと対話することを可能にするソフトウェアプログラムにより実装されます。 API は、コンパイル時に適用され、ソースの互換性 (アプリケーションソースコードが、オペレーティング環境の異なるバージョン間で同様にコンパイルされるかどうか) を決定します。 以下に例を示します。- 開発者が使用する C および C++ ヘッダー
- 言語構文 (ただし、公開された仕様に適用する場合に限定)
- パブリックインターフェイスの定義
- コマンドラインインターフェイス (ドキュメント化された公開インターフェイスに適用する場合に限定)
-
アプリケーションバイナリーインターフェイス (ABI)
ABI は、ランタイム規則のセットで、コンパイルしたプログラムのバイナリー表現と対話します。 ABI は、ランタイム時に適用され、アプリケーションとオペレーティング環境との間の低レベルのインターフェイスを説明します。 以下に例を示します。- データの種類、サイズ、調整
- 集約型、C++ ランタイムの型情報、仮想テーブルのレイアウト
- 呼び出し標準 (関数の引数を渡し、戻り値を受け取る方法を定義)
- オブジェクトファイルおよびプログラムライブラリーのバイナリー形式
- (非同期の) 巻き戻し情報の存在および形式
- 機能やデータシンボルの名前とバージョン、および (データシンボルの場合は) シンボルサイズ
- 仮想マシンへのバイトコードまたは中間表現およびパブリックインターフェイス
コンパイラー、リンカー、ランタイムライブラリー、およびオペレーティングシステムなどのツールは、ABI と連携する必要があります。 CLI ツールの出力は、安定した ABI とはみなされません。
-
ABI 準拠
コンパイラーは、ABI により列挙されるすべての仕様に準拠するコードを生成する場合、その ABI に準拠しています。 ライブラリーは、ABI に従って実装されている場合、その ABI に準拠しています。 アプリケーションは、ABI に準拠するツールを使用して構築され、ABI で指定された動作を変更するソースコード、または ABI をバイパスするソースコードが含まれていない場合、ABI に準拠しています。 -
バイナリー互換性
バイナリー互換性は、特定の ABI 用 (通常は、RHEL と特定のハードウェアアーキテクチャーの組み合わせ) にコンパイルされたアプリケーションバイナリーが、異なるバージョンの RHEL に同じように読み込まれ、実行されることを意味します。 アプリケーションバイナリーは、実行可能ファイル、動的共有オブジェクト (DSO)、ソース、バイトコード (インタープリター型 Just-In-Time コンパイル言語用)、およびそれらの必要なデータファイルで構成されます。 -
コア永続システムインフラストラクチャー
コア永続システムインフラストラクチャーとは、システムの状態を表したり、システムとの通信手段 (システムコール、ヘッダーファイルなど) を提供したりするインターフェイスおよび外部で利用可能なデータ構造のことです。 -
仮想化環境での互換性
仮想環境は、ベアメタル環境で実行される非特権アプリケーションが、対応する仮想環境で変更されずに実行されるベアメタル環境をエミュレートします。 仮想環境は、物理リソースの抽象化されたシンプルなビューを表示するため、いくつかの違いが存在する可能性があります。 -
コンテナー化環境での互換性
コンテナー環境は、ホスト OS からの分離を提供し、少なくともホスト OS ライブラリーおよびバイナリーから分離した方法でアプリケーションを実行できますが、ホスト上の他のすべてのコンテナーと同じ OS カーネルを引き続き共有します。 -
メジャーリリースおよびマイナーリリース
Red Hat メジャーリリースは、製品開発における重要なステップを表します (通常、大規模な変更はメジャーリリースで行われます)。 マイナーリリースは、メジャーリリースの範囲内でより頻繁に提供され、通常は小規模かつ増分的な開発手順が提供されます。 -
コンポーネント
インストール可能な言語、アプリケーション、データベース、または RHEL で実行されるその他のパッケージの機能セット。 コンポーネントは、モジュール、Software Collections、または従来の RPM 形式でパッケージ化できます。 コンポーネントは、コンテナーイメージで利用できます。 -
Application Streams
Application Streams は、RHEL システムでのインストールに利用可能なコンポーネントを複数のバージョン用意します。 それぞれの異なるバージョンは、ストリームと呼ばれます。 PHP 7.2 と PHP 7.3 はストリームです。 Application Streams は、SCL、モジュール、または従来の RPM 形式でパッケージ化できます。 多くの Application Streams には指定されたライフサイクル (3 年) があるため、以下で説明するように、互換性レベル 3 に分類されます。 -
Software Collection (SCL)
適切に統合され、十分にテストされパッケージのセットで、個別のユニットとして一緒にリリースされます。 Software Collection は、Red Hat Enterprise Linux で使用する、安定した新しいバージョンのコンポーネントを提供します。 -
モジュール性
モジュールは、関連するメタデータを持つ RPM のコレクションで、グループとしてインストールされたり、グループとして削除されたりします。 モジュールは、データベースなどの一部の大規模なコンポーネントが、複数のバージョンを提供できるようにするメカニズムです。 モジュールは 1 つまたは複数のストリームで利用できます。 モジュールストリームは通常、ソフトウェアのメジャーバージョンを表し、ユーザーが使用するソフトウェアパッケージのバージョンを選択できるようにします。 モジュールは、Application Streams でも使用できますが、その他のモジュールの依存モジュールとしても使用できます。 モジュールの API に記載されていない RPM は、実装の詳細とみなされ、モジュールが提供する互換性の保証の対象にはなりません。 -
SystemTap 静的プローブ
SystemTap 静的プローブは、SystemTap プロファイリングおよび追跡フレームワークに含まれます。 プローブは、主要なシステムライブラリーに統合されており、アプリケーションとライブラリーのプロファイリングおよびデバッグをサポートします。 -
ファイルシステム階層標準 (FHS)
FHS は、さまざまなファイルの種類とディレクトリーに関する名前、場所、パーミッションを定義するファイルシステム構造です。 FHS 準拠のファイルシステムは相互に互換性があり、/usr/ パーティションを読み取り専用としてマウントする機能があります。 後者の機能は、共通の実行可能ファイルがパーティションに含まれており、ユーザーが変更できないため、重要と言えます。 -
CodeReady Linux Builder リポジトリー
CodeReady Linux Builder リポジトリーには、開発者が RHEL アプリケーションの開発時に使用するコンポーネントが含まれていますが、これは実稼働環境にはデプロイされません。 CodeReady Linux Builder リポジトリーのコンポーネントはサポートされません。
互換性レベル
Red Hat Enterprise Linux のすべてのコンポーネントおよびパッケージは、以下の 4 つの互換性レベルのいずれかに分類されます。
-
互換性レベル 1
- API および ABI は、メジャーリリースのライフサイクル期間内で安定し、ABI はその後に続く 2 つのメジャーリリースでも安定します (ABI の新規または修正が導入されるリリースと、その後に続く 2 つのメジャーリリース (n, n+1, n+2))。 このドキュメントでは、リリース n は Red Hat Enterprise Linux 8 を指します。 ライブラリーへの変更が原因で既存のバイナリーとの互換性がなくなると、アプリケーションを修正せずに実行するため、古い ABI と一緒に、別のバージョンのライブラリーが提供されます。
-
互換性レベル 2
- API および ABI は、1 つのメジャーリリースのライフサイクル期間内で安定します。 互換性レベル 2 のアプリケーションインターフェイスは、マイナーリリースからマイナーリリースへは変更されず、メジャーリリースの期間中は安定しているため、アプリケーションは依存することができます。 互換性レベル 2 は、Red Hat Enterprise Linux 8 のパッケージのデフォルトです。 別の互換性レベルを持つことが確認されていないパッケージは、互換性レベル 2 とみなされます。
-
互換性レベル 3
- このレベルは、Red Hat Enterprise Linux に含まれる言語、ツール、およびアプリケーションに適用されます。 各コンポーネントは、API および ABI がサポートされるライフサイクルを指定します。 新しいバージョン (PHP7.2 および PHP7.3) は、 可能な限りバージョン間で API と ABI の互換性を持たせようとします。 ただし、バージョン間の互換性は保証されるものではありません。
- ツールセットと呼ばれる継続的な更新を受け取るコンポーネントと開発者ツールは、互換性レベル 3 と考える必要があります。 開発者は、リリースごとにこれらのコンポーネントがどのように変更されるのかに注意を払い、理解する必要があります。
-
互換性レベル 4
- 互換性は提供されません。 ABI および API はいつでも変更できます。 これらのコンポーネントは、長期サポートが必要なアプリケーションでは使用しないでください。
互換性レベルに関する注意事項
ベアメタル設定の互換性レベルは、ハードウェアと直接対話する機能を除き、仮想化およびコンテナー化された設定にも適用されます。 ハードウェアに直接関連する機能には、API または ABI の互換性レベルがありません。 たとえば、Graphics Processing Unit (GPU) 機能に依存するアプリケーションは、バイナリー互換性を期待できません。
Red Hat では、アプリケーション開発者に対して、依存する動作が API の公式ドキュメントで明示的に定義されていることを確認するよう求めています。これは、未指定の実装特有の動作への依存や、特定の API 実装におけるバグへの依存を防ぐためです。 たとえば、GNU C ライブラリー (glibc) の新しいリリースは、アプリケーションが文書化されていない API を使用するか、未定義の動作に依存している場合に、古いリリースとは互換性がない場合があります。
不明な点などは、サポート担当者にお問い合わせください。
互換性の例外
以下は、RHEL での互換性の例外です。
SystemTap 静的プローブ
- 現時点では、統合された SystemTap 静的プローブが同じプローブの名前、プローブの場所、または引数の解釈もしくは数を保持するという保証はありません。 プローブは、主に詳細な分析とデバッグ用に設計されているため、基礎となる実装の変更に応じてプローブも変更できる必要があります。
C/C++ ランタイムを使用した静的リンク
- C/C++ ランタイムを使用した静的リンクはサポートされていません。 これには、glibc-static パッケージまたは libstdc++-static パッケージに含まれるファイルとのリンクが含まれます。 静的リンクを選択できますが、インストールのいずれかのパッケージが変更された場合に、生成されるアプリケーションバイナリーが動作しない可能性があります。
C/C++ アプリケーションサニタイザー
- コンパイラーオプション “-fsanitize=[option]” で構築された C/C++ アプリケーションは、このドキュメントに記載されている API や ABI の保証には含まれません。 サニタイザーランタイムを実装するサニタイザーライブラリーは互換性レベル 4 に含まれ、互換性の保証はありません。
CodeReady Linux Builder リポジトリー
- CodeReady Linux Builder リポジトリーに含まれるパッケージはすべてサポート対象外です。 このレポジトリーのパッケージは、開発者が使用するために維持されますが、その多くは特定のユースケースで使用されます。 開発者は、互換性レベルが適用されないことを理解した上で、これらのパッケージを使用することをお勧めします。
- ディストリビューションのバイナリー rpm に、CodeReady Builder 開発パッケージ (例: ヘッダーや共有オブジェクトシンボリックリンク) からしかアクセスできない機能が含まれている場合は、これらの機能は CodeReady Linux Builder でのみ利用できると考えるようにしてください。
バイナリー互換性を維持するためのガイドライン
Red Hat では、アプリケーション開発者がバイナリー互換性を改善するために、以下の原則を採用することを推奨しています。
-
互換性レベルに記載されているアプリケーションのニーズに適したライブラリーおよびアプリケーションのみを使用してください。
-
ライブラリーの公開されたインターフェイスを使用してアプリケーションをビルドします。 非公開 (内部) のインターフェイスは、いつでも変更される可能性があり、依存アプリケーションに依存すると不安定になる可能性があります。
- ライブラリーが開発パッケージを提供する場合は、独自の開発のために提供されたヘッダーを含むその開発パッケージをインストールして使用する必要があります。 ライブラリーが開発パッケージを提供しない場合や、リンク用のヘッダーと共有オブジェクトのセットを提供しない場合、そのライブラリーの API および ABI は互換性保証の対象外となります。
- アプリケーションに必要なすべてのライブラリーとリンクする必要があります。 必要なすべてのライブラリーに対してリンクできないことを「アンダーリンク」と呼びます。 アンダーリンクのアプリケーションは、ABI 互換性を利用できません。
- アプリケーションが ELF バージョンのシンボルを動的に呼び出す場合は、特定のバージョンで特定のシンボルを要求するために、アプリケーションは glibc dlvsym API を使用する必要があります。 dlsym API (バージョン指定子なし) を使用すると、常に最新バージョンのシンボルが取得されるため、APIの動作も最新となり、アプリケーションに適さない場合があります。
-
アプリケーションは、構築された環境と同じか、その環境より新しい環境で実行した場合に限り、正しく実行することが保証されます。 たとえば、Red Hat Enterprise Linux 8.0 でアプリケーションをコンパイルした場合は、依存するコンポーネントの互換性レベルに応じて、アプリケーションが Red Hat Enterprise Linux 8.0 以降でのみ適切に実行されることが保証されます。
-
アプリケーション開発者は、未指定の実装固有のセマンティクスへの依存や、特定の API 実装のバグへの依存を防ぐために、公開されている API ドキュメントに依存する動作が記載されていることを確認する必要があります。
-
たとえば、GNU C ライブラリーの新しいリリースは、以前の動作が公開された仕様と一致しなかった場合、古いリリースとの互換性が保証されていません。
ライブラリーの静的リンク (C/C++) は使用しないでください。 静的リンクにより、実行可能ファイルには、独自のバージョンのライブラリーが存在します。 これにより、これらのライブラリーの依存関係が途中で変更された可能性があるため、アプリケーションが、新しいバージョンのオペレーティングシステムで予期した通りに動作しない可能性が高くなります。 この問題を回避するには、アプリケーションを動的にリンクすることが強く推奨されます。 -
RPM メカニズムを使用して、アプリケーションをパッケージ化します。 RPM は、アプリケーション依存関係の詳細な仕様を含むソフトウェアパッケージングメカニズムを提供します。 RPM を作成する際は、以下の点に留意してください。
* 適切な RPM 構文を使用して、必要なすべてのランタイムとビルドの依存関係を明示的に示します。 可能な場合は依存関係の自動追跡を使用して、AutoReqProv タグ、AutoReq タグ、および AutoProv タグによる無効化を避けることをお勧めします。- Red Hat が提供するパッケージで管理されるファイルの変更、置換、再コンパイルはしないでください。 これらを実行すると、予期しない動作が発生する可能性があります。
- 依存関係を考慮する際、すべての Red Hat Enterprise Linux システムに、可能なパッケージがすべてインストールされていることを前提としないでください。 デフォルトでインストールされているパッケージが、メジャーリリース間、同じバージョンの製品バリアント間、およびお客様のシステムで変更される可能性があります。 アプリケーションが動作するために必要なすべてのパッケージに常に依存し、推移的依存関係が変更されないままであると想定しないでください。
-
プログラムをインストールする際は、ファイルシステム階層標準 (FHS) バージョン 2.3 以降に従ってください。 サードパーティーソフトウェアは、'/opt' サブディレクトリーにインストールする必要があります。 FHS の詳細は、http://www.pathname.com/fhs/ を参照してください。
- システムパッケージまたは他のコンポーネントが提供する設定ファイルに依存するアプリケーションを設計しないでください。 アップストリームコミュニティーが、保存するように明示的にコミットしない限り、これらのファイルはバージョン間で変更される可能性があります。
- Red Hat が提供しているシステムコンポーネントと同じ名前で、パッケージ、モジュール、その他のグローバル識別子をインストールしないでください。 これには、RPM パッケージ名 (Provides を含む)、共有オブジェクト名 (libpthread.so.0 などの soname)、シンボル名 (log など) が含まれるほか、システムが使用する Python パッケージ名、D-Bus エンドポイントも含まれます。
- 現時点で、アプリケーションのいずれの互換性レベルにも記載されていないコンポーネントの機能が必要な場合、またはコンポーネントを別の互換性レベルに移動したい場合は、サポート担当者にお問い合わせください。
- お使いのアプリケーションよりも互換性の保証が短いコンポーネントには依存しないでください。 パッケージとその互換性レベルの一覧は、付録を参照してください。
- 特定の Linux カーネルバージョンに依存しないでください。 proc、sys、および debug ファイルシステム、またはその他の擬似ファイルシステムからの読み取りは回避してください。 ioctls を使用してハードウェアと直接対話することは避けてください。
注記: メジャーリリースのライフサイクル期間中、Red Hat は商業的に合理的な範囲内で、すべてのマイナーリリースとエラータアドバイザリーにおけるランタイム環境のバイナリー互換性の維持に努めています。 ただし、必要に応じて、重大な影響を及ぼすセキュリティー問題や、その他の重要な問題に対処するために、この互換性維持の目標に Red Hat が例外を設けることがあります。 また、上記および付録 A で説明されているように、Red Hat Enterprise Linux のメジャーリリースには、アプリケーションの移行を容易にするために、以前のメジャーリリースに含まれていた後方互換性ライブラリーの限定セットが含まれます。 Red Hat は通常、変更する内容を最小限に抑えて、バイナリー互換性を維持するようにします。
付録 A: 特定のパッケージおよびライブラリーの互換性レベル
各互換性レベルについて、互換性レベルに含まれる API および ABI を提供するバイナリーパッケージを定義します。 便宜上、バイナリー RPM が構築されたソース RPM を記載していますが、このソース RPM は、互換性レベルには含まれません。
互換性レベル 1 (CL1): API と ABI は、(RHEL 8 以降の) 3 つのメジャーリリースで安定しています。
| ソース RPM (参照用) | レベル 1 のバイナリー RPM |
|---|---|
| glibc | glibc (glibc-static パッケージは含まれません) |
| gcc | libstdc++、libgcc、libgomp、libatomic |
| elfutils | elfutils-libelf (elfutils-libelf-static-devel パッケージは含まれません) |
| krb5 | krb5-libs |
| libxml2 | libxml2 |
| libxslt | libxslt |
| libglvnd | libglvnd-glx、libglvnd-egl、libglvnd-gles、libglvnd-opengl |
| mesa-libGLU | mesa-libGLU |
| pam | pam |
| vulkan-loader | vulkan-loader |
| zlib | zlib |
互換性レベル 2: API および ABI は、同じメジャーリリースで安定しています。
注記: 以下は、一般的に使用されるパッケージの一覧で、すぐに参照できるように追加されています。 これは完全なリストではありません。 このドキュメントに記載される互換性レベルに含まれていないコンポーネントはレベル 2 と見なされ、メジャーリリース内 (Red Hat Enterprise Linux 8 のライフサイクル期間中) の互換性に依存することができます。
| ソース RPM (参照用) | CL2 のバイナリー RPM |
|---|---|
| gcc | libgfortran (具体的には共有ライブラリー libgfortran.so.5)、libquadmath |
| tbb | tbb、tbb-devel、tbb-doc、python3-tbb |
| SDL | SDL |
| libusb | libusb |
| alsa-lib | alsa-lib |
| libmodulemd | libmodulemd |
| gtk2 | gtk2 |
| gtk3 | gtk3 |
| motif | motif |
| libacl | libacl |
| libattr | libattr |
| libvirt | libvirt-client |
| libX11 | libX11 |
| libXaw | libXaw |
| libXau | libXau |
| libXrandr | libXrandr |
| libXrender | libXrender |
| libXext | libXext |
| libXft | libXft |
| libXi | libXi |
| libXmu | libXmu |
| libXpm | libXpm |
| qt5-qt5base | qt5-qt5base |
| bzip2 | bzip2-libs |
| curl | libcurl |
| xz | xz-libs |
| systemd | systemd-libs |
| dbus | dbus-libs |
| openssl | openssl-libs |
| gnutls | gnutls |
| nss | nss |
| libgcrypt | libgcrypt |
| libssh | libssh |
互換性レベル 3: API および ABI は、コンポーネントの公開されているライフサイクル期間中は安定しています。
レベル 3 コンテンツの現在のセットは、Red Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
レベル 3 コンテンツには、レベル 2 コンテンツと同じ ABI および API 互換性があります。違いは、Application Stream の表で定義されているように、メンテナンス間隔のみです。
互換性レベル 4: API または ABI の安定性は、Red Hat の判断で変更される可能性があります。
| ソース RPM またはモジュール (参照用) | CL4 のバイナリー RPM または Module:Stream |
|---|---|
| gcc | libasan、libasan-static、libatomic-static、libgfortran-static、libitm、libitm-static、liblsan、liblsan-static、libstdc++-static、libtsan、libtsan-static、libubsan、libubsan-static |
| glibc | glibc-static |
| libxcrypt | libxcrypt-static |
| libmodulemd | libmodulemd1 |
| libnftnl | libnftnl、libnftnl-devel |
| lttng-ust | lttng-ust、lttng-ust-devel |
| libcgroup | libcgroup |
| libdrm | libdrm |
| libglvnd | libglvnd |
| libvdpau | libvdpau |
| libXfont2 | libXfont2 |
| mesa | mesa-libGL、mesa-dri-drivers |
| ocl-icd | ocl-icd |
| python-evdev | python3-evdev |
| vulkan-validation-layers | vulkan-validation-layers |
| wayland-protocols | wayland-protocols-devel |
| xorg-sgml-doctools | xorg-sgml-doctools |
| xorg-x11-server | xorg-x11-server-Xorg、xorg-x11-server-Xwayland |
| gnome-desktop | gnome-desktop |
| pipewire | pipewire、pipewire-devel、pipewire-libs、pipewire-utils |
| pulseaudio | pulseaudio-libs、pulseaudio-module-x11、pulseaudio-module-bluetooth、pulseaudio-module-gconf |
| bcc | bcc、bcc-tools、python3-bcc |
| kabi-dw | kabi-dw |
| criu | criu、python3-criu |
| nettle | nettle |
| bind | bind-devel、bind-export-devel、bind-export-libs、bind-libs、bind-libs-lite、bind-lite-devel、bind-pkcs11-devel、bind-pkcs11-libs |
| wireshark | wireshark-cli、wireshark-devel |
| cracklib | cracklib |
| samba | samba-libs |
| openldap | openldap |
| libfastjson | libfastjson |
| libestr | libestr |
| liblognorm | liblognorm |
| librdkafka | librdkafka |
| librelp | librelp |
| http-parser | http-parser |
| openvswitch-selinux-extra-policy | openvswitch-selinux-extra-policy |
| virtio-win | virtio-win |
| driverctl | driverctl |
| ipset | ipset-libs |
| libteam | libteam、libteam-devel、network-scripts-team、python3-libteam、teamd、teamd-devel、libteam-doc |
| WALinuxAgent | WALinuxAgent |
| cloud-init | cloud-init |
| open-vm-tools | open-vm-tools |
| lldpad | lldpad |
| dpdk | dpdk、dpdk-devel、dpdk-doc、dpdk-tools |
| webkit2gtk3 | webkit2gtk3、webkit2gtk3-devel、webkit2gtk3-jsc、webkit2gtk3-jsc-devel、webkit2gtk3-plugin-process |
| container-tools | container-tools:rhel8 |
| HdrHistogram_c | HdrHistogram_c |
| xdp-tools | xdp-tools、libxdp |
| rhc | rhc |
| rhc-worker-playbook | rhc-worker-playbook |
| coreos-installer | coreos-installer |
| eth-tools | eth-tools-basic、eth-tools-fastfabric |
| sevctl | sevctl |
| xorg-x11-server-Xwayland | xorg-x11-server-Xwayland |
| libbpf | libbpf |
| micropipenv | micropipenv |
| bind9.16 | bind9.16 bind9.16-chroot bind9.16-libs bind9.16-license bind9.16-utils bind9.16-devel bind9.16-dnssec-utils bind9.16-doc python3-bind9.16 |
| fido-device-onboard | fdo-admin-cli fdo-client fdo-init fdo-manufacturing-server fdo-owner-cli fdo-owner-onboarding-server fdo-rendezvous-server |
| libzdnn | libzdnn libzdnn-devel |
| python-resolvelib | python38-resolvelib |
| qatlib | qatlib qatlib-devel qatlib-tests |
| qatzip | qatzip qatzip-libs qatzip-devel |
| rig | rig |
| sshpass | sshpass |
| xxhash | xxhash、xxhash-devel、xxhash-doc、xxhash-libs |
| yara | yara |
| ecj | ecj |
| inkscape1 | inkscape1、inkscape1-docs、inkscape1-view |
| libwpe | libwpe、libwpe-devel |
| libzpc | libzpc、libzpc-devel |
| rtla | rtla |
| synce4l | synce4l |
| tomcat | tomcat、tomcat-admin-webapps、tomcat-docs-webapp、tomcat-el-3.0-api、tomcat-jsp-2.3-api、tomcat-lib、tomcat-servlet-4.0-api、tomcat-webapps |
| wpebackend-fdo | wpebackend-fdo、wpebackend-fdo-devel |