DNFモジュールとアプリケーション・ストリームの使用
DNFには、単一のOSリリース内で異なるバージョンのソフトウェア・アプリケーションを管理するための、モジュール、ストリームおよびプロファイルの概念が導入されています。モジュールを使用することで、単一のアプリケーションとその依存関係を構成する多数のパッケージをグループ化できます。ストリームは、同じモジュールの別のバージョンを提供するために使用できます。プロファイルを使用すると単一モジュールのオプション構成を定義できるため、モジュールは開発者パッケージのみに限定することも、拡張機能用の追加のパッケージを含めるようにスコープを設定することもできます。
モジュラ・コンテンツはコアOSパッケージとは別に使用できるため、そのようなユーザー空間アプリケーションは各種のユーザー空間環境(仮想マシン、コンテナ、基本OSなど)にインストールできます。Oracle Linux 8およびOracle Linux 9のモジュラ・コンテンツは、通常、アプリケーション・ストリーム(AppStream)リポジトリで提供されます。
最新のOracle Linuxバージョンのアプリケーション・ストリーム・パッケージのリストは、Oracle Linux: 製品ライフサイクル情報を参照してください。
-
モジュール: グループ化された同時にインストールする必要があるRPMパッケージのセットです。これらには、インストール可能なアプリケーションの複数のバージョンで構成された複数のストリームを含めることができます。モジュール・ストリームを有効にすることで、そのモジュール・ストリームに含まれるRPMパッケージへのシステム・アクセスを提供します。
一般的なモジュールには、次のタイプのパッケージを含めることができます。
-
アプリケーションのパッケージ
-
アプリケーションの固有の依存関係ライブラリが含まれたパッケージ
-
アプリケーションのドキュメントが含まれたパッケージ
-
ヘルパー・ユーティリティが含まれたパッケージ
-
-
モジュール・ストリーム: モジュール内に含まれる異なるバージョンのコンテンツを保持します。
モジュールは複数のストリームを保持できます。そのストリームごとに異なるバージョンのパッケージとその依存関係が含まれています。各ストリームは、更新を個別に受け取ります。単一のモジュールに複数のストリームを含めることができます。ただし、それぞれのモジュールがパッケージへのアクセスを提供するために有効にできるストリームは1つのみです。多くの場合、最新バージョンのストリームがデフォルト・ストリームとして選択されていて、特定のストリームが操作で指定されていないか、それまでに別のストリームが有効にされていない場合に使用されます。
モジュール・ストリームは、物理リポジトリ内の仮想リポジトリと考えられます。たとえば、
postgresql
モジュールは、PostgreSQLデータベースをストリーム9.6および10で提供し、バージョン10が現在のデフォルト・ストリームになります。ノート:
インストールされているモジュールには最新のストリームを使用することをお薦めします。これは、他のストリームが引き続き制限付きサポートを受ける可能性がある場合も同じです。
-
モジュール・プロファイル: 特定のユース・ケースに応じて同時にインストールする特定のパッケージのリストを指定します。それと同時に、プロファイルはアプリケーション・パッケージャやエキスパートによる推奨事項でもあります。モジュールごとに1つ以上のプロファイルを用意できます。
パッケージのインストールには、ワンタイム・アクションとしてモジュールのプロファイルを使用します。モジュールのプロファイルを使用してパッケージをインストールすることが、モジュールによって提供されるパッケージのインストールまたはアンインストールの妨げになることはありません。さらに、同じモジュールのプロファイルを使用することで、追加の準備なしでパッケージをインストールできます。また、モジュールのパッケージ・リストには、モジュール・ストリームの外部からのパッケージを含めることもできます。これらのパッケージは、多くの場合、BaseOSまたはストリーム独自の依存関係からのものです。アプリケーション・ストリームのモジュールには常にデフォルト・プロファイルがある点に注意してください。このデフォルト・プロファイルは、その他のプロファイルが明示的に指定されていないときにインストールに使用されます。
たとえば、Apache Webサーバーを含む
httpd
モジュールには、インストール用に次のプロファイルが含まれています。-
common
: このプロファイルは、堅牢な本番対応のデプロイメントであり、デフォルトのプロファイルです。 -
devel
: このプロファイルは、httpd
に変更を加えるために必要なパッケージをインストールします。 -
minimal
: このプロファイルは、稼働するWebサーバーを実現する最小のパッケージ・セットをインストールします。
-
以前のリリースのOracle Linuxに含まれていたソフトウェア・コレクションとは異なり、アプリケーション・ストリームからインストールされたアプリケーションは標準の場所にインストールされるため、追加のコマンドやアクションを実行する必要はありません。インストールされた任意のバージョンのアプリケーションは、インストール元のストリームに関係なく、その他のバージョンと同じように実行できます。インストール後のアプリケーションは、DNFを使用してインストールした別のネイティブ・アプリケーションとまったく同様に動作します。
モジュールを管理するには、dnf
サブコマンドとdnf module
サブコマンドの組合せを使用します。モジュールで一般的に使用されるDNF
コマンドのリストは、「DNFコマンド・リファレンス」の表7-3を参照してください。
モジュラの依存性とストリームの変更について
通常、コンテンツを提供するパッケージは別のパッケージに依存し、適切な依存関係バージョンを指定します。これと同じメカニズムは、モジュールに含まれているパッケージにも当てはまります。パッケージとそのパッケージの特定のバージョンをモジュールとストリームにグループ化するときには、いくつかの追加の制約があります。たとえば、モジュール・ストリームでは、そのモジュールに含まれているパッケージとは無関係に、別のモジュールのストリームに対する依存関係を宣言できます。パッケージまたはモジュールの操作後は、インストールされたすべての基礎となるパッケージの依存関係ツリー全体が、パッケージが宣言するすべての条件を満たしている必要があります。同様に、モジュール・ストリームのすべての依存関係も満たされている必要があります。
これらの追加の制約では、パッケージ操作を実行する前に、影響を分析して理解する必要があります。有効化されたモジュール・ストリームを変更しても、変更を完全に制御できるようにパッケージが自動的に操作されるわけではありません。ただし、ツールは常に実行するアクションのサマリーを表示します。
モジュールとストリームに対してパッケージ操作を実行する場合は、次のガイドライン、注意事項および警告に注意してください。
-
モジュール・ストリームを有効にする場合は、他のモジュールのストリームも有効にする必要があります。
-
ストリームからモジュール・ストリーム・プロファイルまたはパッケージをインストールする場合は、追加のモジュールのストリームを有効にすることと、追加のパッケージをインストールすることも必要になります。
-
モジュールのストリームを無効にする場合は、パッケージが自動的に削除されないため、その他のモジュール・ストリームも無効にする必要もあります。
-
パッケージを削除する場合は、他のパッケージの削除が必要になることがあります。いずれかのパッケージがモジュールによって提供されている場合は、モジュール・ストリームは追加のインストールの準備で有効のままになります。これは、そのストリームからのパッケージが後でインストールされない場合でも同じです。これにより、未使用のyumリポジトリの動作がミラー化されます。
-
モジュールに対して有効化されているストリームの切替えは、現在のストリームをリセットして新しいストリームを有効化することと同じです。
ノート:
有効なストリームを切り替えても、インストールされているパッケージは自動的に変更されません。また、それまでのストリームで提供されるパッケージとそれに依存するパッケージの削除や、新しいストリームのパッケージのインストールは、すべて手動で実行する必要があるタスクです。
-
インストール時にアップグレード・スクリプトが実行される可能性があるため、すでにデフォルトでインストールされているもの以外はモジュールのストリームを直接インストールしないようにしてください。
モジュールの依存関係には、RPMの依存関係と同様の通常のパッケージ依存関係が含まれます。ただし、モジュールの可用性は、モジュール・ストリームの有効化にも依存します。モジュール・ストリームは、別のモジュール・ストリームに依存することもあります。
モジュラ・パッケージに対する非モジュラ・パッケージの依存関係は、モジュラ・パッケージがデフォルトとしてマークされているモジュール・ストリームによって提供されている場合にのみアプリケーション・ストリームで使用されます。モジュラ・パッケージが非モジュラ・パッケージに依存している場合は、モジュールとストリームの選択がシステムによって常に保持されます。ただし、それらの選択を明示的に指定して変更することはできません。モジュラ・パッケージは、このパッケージを提供するモジュールの有効化されたストリームから更新を受け取り、別のストリームからのバージョンにアップグレードすることはありません。
モジュールを有効にする方法
選択したモジュールは、Oracle Linuxのインストール時にデフォルトで使用できます。これらのモジュールは必要に応じてインストールできます。デフォルトでインストールされているモジュール以外のモジュールのストリームを直接インストールすると、予期しない問題が発生する可能性があります。
このタスクでは、PHPモジュールの例を使用して、モジュールを有効にする方法を示します。
インストール済モジュールの削除方法
インストール済モジュールを削除すると、有効なモジュール・ストリームのプロファイルによってインストールされている、すべてのパッケージとその依存関係が削除されます。
削除するモジュールには、いくつかのプロファイルがすでにインストールされている必要があります。
インストール済モジュールの削除前に、「モジュラの依存性とストリームの変更について」の情報を確認してください。
このタスクでは、操作モジュール・ストリームのプロファイルにリストされているパッケージだけを削除します。どのモジュール・ストリームのプロファイルにもリストされていないパッケージは、システムにインストールされたままになり、手動で削除できます。各ステップでは、最初に保留中の変更のサマリーが表示され、次に進む前にアクションを確認するよう求められます。
モジュール・ストリームの切替え方法
モジュール・ストリームを切り替えることで、システムで使用されている現在のモジュールの別のバージョンを取得できます。
インストール済モジュールの切替え前に、「モジュラの依存性とストリームの変更について」の情報を確認してください。
ステップによっては、最初に保留中の変更のサマリーが表示され、次に進む前にアクションを確認するよう求められます。
このタスクには、dnf module switch-to
コマンドを使用することもできます。表7-3を参照してください。