4 Oracle Linuxへのソフトウェアのインストール

ULNとOracle Linux yumサーバーのどちらを使用する場合でも、ソフトウェア・パッケージは標準のdnfコマンドを使用してシステムにインストールします。どちらを使用するかは、システムが適切なULNチャネルをサブスクライブしているか、システムでyumリポジトリを有効にしているかによって異なります。

次のようにdnf installコマンドを使用して、パッケージとその依存関係をインストールします。

sudo dnf install package_name

ノート:

dnfは、カーネル・パッケージのインストールとアップグレードを区別しません。dnf installdnf upgradeは、いずれも常にシステムのOSで使用可能な最新のカーネルをダウンロードします。

インストール可能な追加のパッケージがシステムによって通知され、インストールを続行するかどうかの確認を求められます。

Last metadata expiration check: 0:03:03 ago on Mon 11 Sep 2023 11:48:58 AM GMT.
Dependencies resolved.
=======================================================================================================
 Package              Architecture           Version                      Repository              Size
=======================================================================================================
Installing:
 dnf-automatic        noarch                 4.14.0-5.0.1.el9_2           ol9_baseos_latest        53 k

Transaction Summary
=======================================================================================================
Install  1 Package

Total download size: 53 k
Installed size: 52 k
Is this ok [y/N]: 
 

-yオプションを使用することで、dnf installコマンドの確認チェックを省略できます。

DNFパッケージとリポジトリの管理に一般的に使用されるdnfコマンドのリストは、「DNFコマンド・リファレンス」を参照してください。

DNFグループの使用

パッケージのセットは、グループとして編成および管理できます。グループは、親グループにインストール可能なサブグループのセットが含まれるようにネスト化できます。たとえば、仮想化ホスト、グラフィカル・デスクトップ、フォントのコレクション、コア・システム管理ツールを設定するためのグループなどがあります。次の表に、これらのグループを管理するために使用できるdnfコマンドを示します。

グループ・パッケージをインストールする場合は、次のコマンドを使用します。

sudo dnf group install group-name

DNFグループの管理に一般的に使用されるDNFコマンドのリストは、「DNFコマンド・リファレンス」の表7-2を参照してください。

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を参照してください。

  1. モジュールのステータスを確認します。
    sudo dnf module list php
    Oracle Linux 8 Application Stream (x86_64)
    Name           Stream            Profiles                            Summary                        
    php            7.2 [d]           common [d], devel, minimal          PHP scripting language         
    php            7.3               common [d], devel, minimal          PHP scripting language         
    php            7.4               common [d], devel, minimal          PHP scripting language         
    php            8.0               common [d], devel, minimal          PHP scripting language         
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

    各PHPバージョンに対応する3つのプロファイルがあり、共通プロファイルがデフォルトです。[d]フラグは、プロファイルのデフォルト・バージョンを示します。

  2. モジュール・ストリームに関連付けられたプロファイルにインストールされているパッケージをリストします。
    sudo dnf module info --profile php:8.0

    出力には、モジュールに必要な各プロファイルとその関連パッケージが表示されます。たとえば、次のようになります。

    Name    : php:8.0:8060020211215065547:0a326c83:x86_64
    common  : php-cli
            : php-common
            : php-fpm
            : php-mbstring
            : php-xml
    ...
  3. 使用するモジュール・ストリームを有効にします。
    sudo dnf module enable php:8.0 -y
  4. 必要に応じて、選択したストリームのステータスをチェックして、eフラグがあることを確認します。
    sudo dnf module list php
    Name           Stream            Profiles                            Summary                        
    php            7.2 [d]           common [d], devel, minimal          PHP scripting language         
    php            7.3               common [d], devel, minimal          PHP scripting language         
    php            7.4               common [d], devel, minimal          PHP scripting language         
    php            8.0 [e]           common [d], devel, minimal          PHP scripting language
  5. 優先モジュール・ストリームに切り替えるには、モジュール・ストリームの切替え方法を参照してください。

インストール済モジュールの削除方法

インストール済モジュールを削除すると、有効なモジュール・ストリームのプロファイルによってインストールされている、すべてのパッケージとその依存関係が削除されます。

削除するモジュールには、いくつかのプロファイルがすでにインストールされている必要があります。

インストール済モジュールの削除前に、「モジュラの依存性とストリームの変更について」の情報を確認してください。

このタスクでは、操作モジュール・ストリームのプロファイルにリストされているパッケージだけを削除します。どのモジュール・ストリームのプロファイルにもリストされていないパッケージは、システムにインストールされたままになり、手動で削除できます。各ステップでは、最初に保留中の変更のサマリーが表示され、次に進む前にアクションを確認するよう求められます。

  1. モジュールを削除します。
    sudo dnf module remove module-name
  2. モジュール・ストリームを無効にします。
    sudo dnf module disable module-name
  3. モジュール・ストリームから手動でインストールしたパッケージを削除します。
    sudo dnf remove package ...

モジュール・ストリームの切替え方法

モジュール・ストリームを切り替えることで、システムで使用されている現在のモジュールの別のバージョンを取得できます。

切り替えるモジュール・ストリームは、事前に有効化されている必要があります。また、同時に、同じモジュールの別のストリームが事前に存在している必要もあります。

インストール済モジュールの切替え前に、「モジュラの依存性とストリームの変更について」の情報を確認してください。

別のモジュール・ストリームに切り替えると、コンテンツはシステム上の現在のバージョンとは別のバージョンにアップグレードまたはダウングレードされます。

ステップによっては、最初に保留中の変更のサマリーが表示され、次に進む前にアクションを確認するよう求められます。

このタスクには、dnf module switch-toコマンドを使用することもできます。表7-3を参照してください。

  1. モジュールをリセットして、代替ストリームをインストールできるようにします。
    sudo dnf module reset module-name
  2. モジュールの別のストリームのプロファイルをインストールします。
    sudo dnf install @module-name:stream

    他のモジュール・ストリームやパッケージにも変更を適用することが必要な場合もあります。

  3. 以前のモジュール・ストリームからインストールしたパッケージのうち、前のステップでインストールしたプロファイルにリストされていないパッケージを更新またはダウングレードします。
    sudo dnf distro-sync
  4. 以前のモジュール・ストリームからインストールした残りのパッケージを手動で削除します。
    sudo dnf remove package ...