第1章 Yum DNF

この章では、yumユーティリティまたはdnfユーティリティを使用して、ソフトウェア・パッケージをインストールおよびアップグレードする方法について説明します。Oracle Linux 8で提供されるyumコマンドは、dnfコマンドへのシンボリック・リンクです。

1.1 DNFについて

Oracle Linux 8に付属のyumユーティリティは、Dandified Yum (DNF)に基づいています。dnfはRPMパッケージのインストールまたはアップグレードに使用できます。それと同時に、パッケージの依存関係と要件が自動的に処理されます。dnfコマンドは、Oracle Linux yumサーバーで使用可能なリポジトリなどのリポジトリからパッケージをダウンロードするために使用できますが、インターネットアクセスのないシステムに独自のリポジトリを設定することもできます。Unbreakable Linux Network (ULN)に登録されたシステムでdnfコマンドを使用すると、Oracle Linux Premier Supportのお客様に限定されている追加のソフトウェアをインストールすることもできます。

DNFは従来のyumコマンドと比較して、機能とパフォーマンスが大幅に向上しています。DNFにより、モジュラ・コンテンツのサポートや、安定性が高い適切に文書化されたAPIなど、多数の新機能も提供されます。DNFは、コマンドラインから使用する場合や構成ファイルを編集または作成するときには、Yum v3との互換性があります。dnfコマンドとそのすべてのオプションは、以前のリリースのOracle Linuxで使用していたyumコマンドと同様の方法で使用できます。

Oracle Linux 8で提供されるyumコマンドは、dnfコマンドへのシンボリック・リンクです。コマンドには完全な互換性があります。この実装により、以前のリリースのOracle Linuxで実行していたタスクと同様のタスクを実行できる下位互換性レベルが提供され、それと同時にdnfで利用可能な多数の新機能(パッケージの管理やパフォーマンスの向上など)が簡単に使用できます。dnfコマンドと従来のyumコマンドの構文の違いは、『Oracle® Linux 8: リリース・ノートfor Oracle Linux 8』を参照してください。

1.1.1 Oracle Linux Yum Serverについて

Oracle Linux yumサーバーを使用すると、Oracle Linuxのパッケージ(不具合修正、セキュリティ修正、拡張を含む)を、インストール・メディアからインストールするより便利にインストールできます。サーバーには、https://yum.oracle.com/でアクセスできます。

新しいパッケージがリリースされたときに通知を受け取るように、Oracle Linuxメーリング・リストにサブスクライブすることもできます。このメーリング・リストには、https://oss.oracle.com/mailman/listinfo/el-errataからアクセスできます。

1.1.2 YumでのULNの使用について

Oracle Linux yumサーバーで使用可能なリポジトリは、Unbreakable Linux Network (ULN)から使用可能なチャネルと一致しています。その例外は、Oracle Linux Premier Supportのお客様に限定されているULNチャネルです(たとえば、Kspliceなどの製品のチャネル)。

Oracle Cloud InfrastructureでOracle Linuxを実行していて、サービス・ゲートウェイに接続されているコンピュート・ノードは、Oracle Services Networkで使用可能なリージョナルyumサーバーを経由してULNコンテンツに自動的にアクセスできます。これらのyumサーバーは、制限付きULNチャネルで提供されるコンテンツもミラー化するという点で、パブリックに使用可能なOracle Linux yumサーバーとは異なります。

ULNコンテンツへのアクセスは、Oracle Cloud Infrastructureアカウントに対応するサポート契約によって提供されます。ULNのコンテンツにアクセスするために、登録やチャネル・アクセスを管理する別のツールの使用は必要ありません。これにより、コンピュート・ノードで実行する必要があるソフトウェア管理が簡素化されます。

リージョナルyumサーバー上の制限付きコンテンツへのアクセスを有効にするには、適切なrelease-el8パッケージがインストールされていて、アクセスに必要なリポジトリが有効化されていることを確認してください。

1.2 DNF構成

DNFの主な構成ファイルは、/etc/dnf/dnf.confです。DNFのグローバル定義は、DNF構成ファイルの[main]セクション・ヘッダーの下側にあります。次の表では、DNFの主要なディレクティブについて説明します。

ディレクティブ

説明

cachedir

ダウンロードしたパッケージを格納するためのディレクトリ。

debuglevel

0 (なし)から10 (すべて)までのロギング・レベル。

exclude

インストールまたは更新から除外するパッケージのスペース区切りのリスト。例: exclude=VirtualBox-4.? kernel*

gpgcheck

1に設定すると、GPG署名を確認することでパッケージの真正性を検証できます。パッケージが未署名の場合、gpgcheckを0に設定する必要がありますが、悪意のあるユーザーによってパッケージが改変されている可能性にも注意してください。

gpgkey

GPG公開キー・ファイルへのパス。

installonly_limit

インストール可能ないずれかのパッケージのバージョンの最大数。

keepcache

0に設定すると、インストール後にパッケージが削除されます。

logfile

yumログ・ファイルへのパス。

obsoletes

1に設定すると、アップグレード中に古いパッケージが置換されます。

plugins

1に設定すると、yumの機能を拡張するプラグインが有効になります。

proxy

ポート番号を含むプロキシ・サーバーのURL。1.2.1項「プロキシ・サーバーの使用の構成」を参照してください。

proxy_password

プロキシ・サーバーでの認証パスワード。

proxy_username

プロキシ・サーバーでの認証ユーザー名。

reposdir

yum.repo拡張子付きのリポジトリ・ファイルを検索するディレクトリ。デフォルト・ディレクトリは/etc/yum.repos.dです。

詳細は、dnf.conf(5)マニュアル・ページを参照してください。

次のリストに、DNF構成ファイルの[main]セクションの例を示します。

[main]
cachedir=/var/cache/dnf
keepcache=0
debuglevel=2
logfile=/var/log/dnf.log
obsoletes=1
gpgkey=file://media/RPM-GPG-KEY
gpgcheck=1
plugins=1
installonly_limit=3

リポジトリは、/etc/dnf/dnf.conf[main]セクションの下側で定義することも、個別のリポジトリ構成ファイルで定義することもできます。reposdirディレクティブを使用して代替ディレクトリを定義していなければ、dnfは、デフォルトで/etc/yum.repos.dディレクトリにリポジトリ構成ファイルが存在するものと想定します。

下位互換性のために、/etc/dnf/dnf.confへのシンボリック・リンクが/etc/yum.confに作成されます。構成の構文は全般的には同じですが、非推奨になった構成オプションや新しく追加された構成オプションもあります。構成オプションと構文の違いの詳細は、『Oracle® Linux 8: リリース・ノートfor Oracle Linux 8』を参照してください。

1.2.1 プロキシ・サーバーの使用の構成

組織でインターネット・アクセスの仲介としてプロキシ・サーバーが使用されている場合、次の例に示すように、/etc/dnf/dnf.confproxy設定を指定します。

proxy=http://proxysvr.example.com:3128

プロキシ・サーバーで認証が要求される場合は、さらに、proxy_usernameおよびproxy_passwordの設定を次のように指定します。

proxy=http://proxysvr.example.com:3128
proxy_username=user
proxy_password=password

Yumプラグイン(yum-rhn-plugin)を使用してULNにアクセスする場合は、/etc/sysconfig/rhn/up2dateenableProxyおよびhttpProxyの設定を、この例に示すように指定します。

enableProxy=1
httpProxy=http://proxysvr.example.com:3128

プロキシ・サーバーで認証が要求される場合は、さらに、enableProxyAuthproxyUserおよびproxyPassword設定を次のように指定します。

enableProxy=1
httpProxy=http://proxysvr.example.com:3128
enableProxyAuth=1
proxyUser=user
proxyPassword=password
注意

すべてのdnfユーザーに、/etc/dnf/dnf.confまたは/etc/sysconfig/rhn/up2dateへの読取りアクセスが必要です。このファイルをどこからでも読み取れるようにする必要がある場合、ユーザーのログイン・パスワード、特にrootsパスワードと同じパスワードを使用しないでください。

1.2.2 Yumリポジトリの構成

Yumリポジトリ構成ファイルは、DNFによって各種のパッケージとその依存関係のインストール元を特定するために使用されます。

yum構成ファイルまたはyumリポジトリ構成ファイルには、リポジトリを定義する1つ以上のセクションを含めることができます。

次の表で、リポジトリの基本ディレクティブについて説明します。

ディレクティブ

説明

baseurl

リポジトリ・チャネルの場所(file://ftp://http://、またはhttps://アドレスとして表現)。このディレクティブは指定する必要があります。

enabled

1に設定すると、yumでチャネルを使用できます。

name

リポジトリ・チャネルのわかりやすい名前。このディレクティブは指定する必要があります。

このセクションに出現する他の任意のディレクティブは、DNF構成ファイルの[main]セクションにある対応するグローバル定義をオーバーライドします。詳細は、dnf.conf(5)マニュアル・ページを参照してください。

次のリストに、構成ファイルのリポジトリ・セクションの例を示します。

[ol8_appstream]
name=Oracle Linux $releasever Application Stream ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/appstream/$basearch
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

この例では、gpgkeyおよびgpgcheckの値が任意のグローバル設定をオーバーライドします。dnfは、変数$basearchを現在のシステムのアーキテクチャ名で置換します。

dnfコマンドは、/etc/yum.repos.dディレクトリから接尾辞.repoのファイルを自動的に検索して、そのファイルを処理時に構成に追加します。このディレクトリを使用して、利用可能にするリポジトリ用のリポジトリ・ファイルを定義します。

1.2.3 Oracle Linux Yum Serverリポジトリ・ファイルのダウンロード

Oracle Linux yumサーバーは、特定のサポート契約なしで、パブリックに使用可能なすべてのULNチャネルの直接マッピングを提供します。Oracle Linux yumサーバーの各リポジトリに使用されるリポジトリ・ラベルは、ULNのチャネル名に直接マップされます。チャネル名およびチャネルとリポジトリに使用される共通接尾辞の詳細は、第2章「Unbreakable Linux Network」を参照してください。

Oracle Linux 8では、yumから保守できるパッケージとしてリリースされるモジュラyumリポジトリ構成ファイルを使用します。これにより、リポジトリ管理が簡単になり、システムの更新時には常に自動的にyumリポジトリ定義が最新の状態に保たれるようになります。

リリースに対して有効なすべてのyumリポジトリ構成を管理するために使用できるすべてのRPMファイルのリストを取得するには、次のコマンドを実行します。

dnf list "*release-el8*"

使用する特定のソフトウェア・セットに応じたyumリポジトリ構成をインストールするには、dnfコマンドを使用して対応するパッケージをインストールします。

なんらかの理由で、Oracle Linux yumサーバー・リポジトリにアクセスするための構成をすべて削除する場合は、次に示す最小限の内容が含まれた一時的なyumリポジトリ構成ファイルを/etc/yum.repos.d/ol8-temp.repoに作成する必要があります。

[ol8_baseos_latest]
name=Oracle Linux $releasever BaseOS ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/baseos/latest/$basearch
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

その後で、oraclelinux-release-el8パッケージを再インストールして、デフォルトのyum構成をリストアします。

sudo dnf reinstall oraclelinux-release-el8
sudo rm /etc/yum.repos.d/ol8-temp.repo

Oracle Linux yumサーバー・リポジトリ構成ファイルを手動で設定する方法の詳細は、https://yum.oracle.com/getting-started.htmlを参照してください。

ファイルにリストされたリポジトリごとに、enabledディレクティブの値を必要に応じて1または0に設定することで、各リポジトリ構成ファイルのリポジトリを有効化または無効化できます。Oracle Linux 8でリポジトリを有効化または無効化する際の優先方法は、dnf config-managerコマンドを使用することです(第1.2.4項「DNF config-managerプラグインの使用」を参照)。

1.2.3.1 リージョナルyumサーバー・リポジトリにアクセスするためのOracle Cloud Infrastructure Computeインスタンスの構成

Oracle Cloud Infrastructureのコンピュート・インスタンスは、サービス・ゲートウェイ経由でリージョナルyumサーバーにアクセスできます。Oracle Cloud Infrastructure上のyumサーバーは、制限付きULNチャネルで提供されるコンテンツもミラー化するという点で、Oracle Linux yumサーバーとは異なります。

Oracle Linuxのyumリポジトリ構成では、baseurlのyum変数を使用して、適切なyumサーバー・アクセスを管理します。たとえば、Oracle Linux 8のol8_baseos_latestリポジトリのbaseurlは、次のとおりです。

baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/baseos/latest/$basearch

この$ociregion変数は、/etc/dnf/vars/ociregionにコンテンツを移入することで設定できます。このファイルが存在しない場合やファイルが空の場合、baseurlはパブリックにアクセス可能なOracle Linux yumサーバーを指すように拡張されます。一般的なOracle Cloud Infrastructureコンピュート・インスタンスの場合、この変数の値はインスタンスの作成時に設定され、Oracle Cloud Infrastructureサービス・ネットワーク上で最も近くにあるリージョナルyumサーバーを指すようにbaseurlが拡張されます。たとえば、$ociregion-phxに設定されると、baseurlはフェニックスのリージョナルyumを指すように拡張されます。

変数を使用すると、Oracle Linuxデプロイメント全体での構成の標準をある程度維持しながら、Oracle Cloud Infrastructureの顧客が利用できる追加のリソースへのアクセスが提供されます。

1.2.4 DNF config-managerプラグインの使用

dnf-plugins-coreパッケージには、構成の管理と既存の構成に更新を安全に適用するために役立つ複数のユーティリティが含まれています。最も重要なものは、dnf config-managerプラグインです。

dnf config-managerを使用すると、指定したURLまたは指定したリポジトリ・ファイル内のリポジトリを追加できます。たとえば、リモート・サーバーでホストされているOracle Linux 8用のリポジトリ構成ファイルを追加するには、次のコマンドを実行します。

sudo dnf config-manager --add-repo https://example.com/my_yum_config.repo

同じコマンドを使用して、リポジトリがホストされているURLを指定すると、有効なyumリポジトリのリポジトリ構成ファイルを自動的に生成することもできます。たとえば、サンプル・リポジトリ用の/etc/repos.dに新しい構成ファイルを作成するには、次のコマンドを実行します。

sudo dnf config-manager --add-repo https://example.com/repo/OracleLinux/OL8/myrepo/x86_64

dnf config-managerを使用してリポジトリを有効化する場合は、--enableオプションを使用します。たとえば、ol8_appstreamリポジトリを有効化するには、次のコマンドを実行します。

sudo dnf config-manager --enable ol8_appstream

--disableオプションを使用すると、同様の方法でリポジトリを無効化できます。

また、dnf config-managerツールは、--setoptおよび--saveオプションを指定することで、その他の構成オプションを設定する場合にも使用できます。詳細は、dnf.plugin.config_manager(8)マニュアル・ページを参照してください。

1.3 コマンドラインからのDNFの使用

次の表に、dnfコマンドを使用して実行できる一般的なタスクの例を示します。

コマンド

説明

dnf repolist

すべての有効化されているリポジトリのリストを表示します。

dnf list

有効なすべてのリポジトリで使用可能なすべてのパッケージと、システムにインストールされているすべてのパッケージをリストします。

dnf list installed

システムにインストールされているすべてのパッケージをリストします。

dnf list available

有効なすべてのリポジトリにインストールできるすべてのパッケージをリストします。

dnf search string

パッケージの説明で、指定されたstringを検索します。

dnf provides feature

指定されたファイルまたは機能が属するパッケージの名前を検索します。次に例を示します。

dnf provides /etc/dnf/automatic.conf

dnf info package

パッケージの詳細情報を表示します。次に例を示します。

dnf info dnf-automatic

dnf repoquery -l package

パッケージに含まれていて、そのパッケージのインストール時にインストールされるファイルのリストを表示します。次に例を示します。

dnf repoquery -l dnf-automatic

dnf install package

指定されたパッケージ(依存するパッケージを含む)をインストールします。次に例を示します。

dnf install dnf-automatic

dnf check-update

システムにすでにインストールされているパッケージに更新が存在するかどうかを確認します。

dnf upgrade package

指定されたパッケージ(依存するパッケージを含む)を更新します。次に例を示します。

dnf upgrade dnf-automatic

また、DNFはdnf update packageコマンドもアップグレード構文と同じ意味に解釈しますが、この構文は非推奨とみなされています。

dnf upgrade

すべてのパッケージを、それらが依存するパッケージとともに更新します。

また、DNFはdnf update packageコマンドもアップグレード構文と同じ意味に解釈しますが、この構文は非推奨とみなされています。

dnf remove package

指定されたパッケージを削除します。次に例を示します。

dnf remove dnf-automatic

dnf clean all

キャッシュされたすべてのパッケージ・ダウンロード、およびリモート・パッケージに関する情報を含むキャッシュされたヘッダーを削除します。このコマンドを実行すると、終了していないトランザクションまたは期限切れのヘッダーから結果的に生じる可能性のある問題をクリアするのに役立ちます。

dnf help

dnfの使用方法のヘルプを表示します。

dnf help command

指定したdnfコマンドのヘルプを表示します。次に例を示します。

dnf help upgrade

dnf shell

dnfの対話型シェルを実行します。

詳細は、dnf(8)マニュアル・ページを参照してください。

ノート

dnfでは、カーネル・パッケージのインストールとアップグレードが区別されません。upgradeinstallのどちらを指定しても、dnfでは常に新しいカーネルがインストールされます。

1.4 DNFグループ

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

コマンド

説明

dnf group list

多数のサブグループとインストールに使用可能なパッケージのベース・グループが含まれている環境グループをリスト表示します。

dnf group info groupname

グループの詳細情報を表示します。このグループが親グループの場合は、そこに含まれるすべてのサブグループがリスト表示されます。または、グループ内のすべてのパッケージがリスト表示されます。

dnf group install groupname

グループのすべてのパッケージをインストールします。

dnf group update groupname

グループのすべてのパッケージを更新します。

dnf group remove groupname

グループのすべてのパッケージを削除します。

1.5 DNFモジュールとアプリケーション・ストリーム

DNFには、モジュール、ストリームおよびプロファイルの概念が導入されています。これにより、単一のオペレーティング・システム・リリース内で異なるバージョンのソフトウェア・アプリケーションを管理できるようになります。モジュールを使用することで、単一のアプリケーションとその依存関係を構成する多数のパッケージをグループ化できます。ストリームは、同じモジュールの別のバージョンを提供するために使用できます。プロファイルを使用すると単一モジュールのオプション構成を定義できるため、モジュールは開発者パッケージのみに限定することも、拡張機能用の追加パッケージを含めるようにスコープを設定することもできます。

モジュラ・コンテンツは、コア・オペレーティング・システム・パッケージで個別に使用できるため、そのようなユーザー空間アプリケーションは各種のユーザー空間環境(仮想マシン、コンテナ、基本オペレーティング・システムなど)にインストールできます。Oracle Linux 8のモジュラ・コンテンツは、通常、アプリケーション・ストリーム(AppStream)リポジトリで提供されます。最新のOracle Linux 8バージョンのアプリケーション・ストリーム・パッケージの一覧は、付録A「アプリケーション・ストリーム・モジュールのライフサイクル」を参照してください。

  • モジュール: グループ化された同時にインストールする必要があるRPMパッケージのセットです。インストール可能なアプリケーションの複数のバージョンで構成された複数のストリームを含めることができます。モジュール・ストリームを有効にすることで、そのモジュール・ストリームに含まれるRPMパッケージへのシステム・アクセスを提供します。

    一般的なモジュールには、次のタイプのパッケージを含めることができます。

    • アプリケーションのパッケージ

    • アプリケーションの固有の依存関係ライブラリが含まれたパッケージ

    • アプリケーションのドキュメントが含まれたパッケージ

    • ヘルパー・ユーティリティが含まれたパッケージ

  • モジュール・ストリーム: モジュール内に含まれる異なるバージョンのコンテンツを保持します。

    モジュールは複数のストリームを保持できます。そのストリームごとに異なるバージョンのパッケージとその依存関係が含まれています。各ストリームは、更新を個別に受け取ります。単一のモジュールに複数のストリームを含めることができます。ただし、それぞれのモジュールがパッケージへのアクセスを提供するために有効にできるストリームは1つのみです。多くの場合、最新バージョンのストリームがデフォルト・ストリームとして選択されていて、特定のストリームが操作で指定されていないか、それまでに別のストリームが有効にされていない場合に使用されます。

    モジュール・ストリームは、物理リポジトリ内の仮想リポジトリと考えられます。たとえば、postgresqlモジュールは、PostgreSQLデータベースをストリーム9.6および10で提供し、バージョン10が現在のデフォルト・ストリームになります。

    ノート

    インストールされているモジュールには最新のストリームを使用することをお薦めします。これは、その他のストリームが引き続き制限付きサポートを受ける可能性がある場合も同じです。

  • モジュール・プロファイル: 特定のユース・ケースに応じて同時にインストールする特定のパッケージのリストを指定します。それと同時に、プロファイルはアプリケーション・パッケージャやエキスパートによる推奨事項でもあります。モジュールごとに1つ以上のプロファイルを用意できます。

    パッケージのインストールには、ワンタイム・アクションとしてモジュールのプロファイルを使用します。モジュールのプロファイルを使用してパッケージをインストールすることが、モジュールによって提供されるパッケージのインストールまたはアンインストールの妨げになることはありません。さらに、同じモジュールの複数のプロファイルを使用して、追加の準備なしでパッケージをインストールすることもできます。また、モジュールのパッケージ・リストには、モジュール・ストリームの外部(通常はBaseOSまたはストリームの依存関係)からのパッケージを含めることもできます。アプリケーション・ストリームのモジュールには常にデフォルト・プロファイルがある点に注意してください。このデフォルト・プロファイルは、その他のプロファイルが明示的に指定されていないときにインストールに使用されます。

    たとえば、Apache Webサーバーが含まれているhttpdモジュールは、次のプロファイルをインストール用にサポートします。

    • common: このプロファイルは、堅牢な本番対応のデプロイメントであり、デフォルトのプロファイルです。

    • devel: このプロファイルは、httpdに変更を加えるために必要なパッケージをインストールします。

    • minimal: このプロファイルは、稼働するWebサーバーを実現する最小のパッケージ・セットをインストールします。

以前のリリースのOracle Linuxに含まれていたソフトウェア・コレクションとは異なり、アプリケーション・ストリームからインストールされたアプリケーションは標準の場所にインストールされるため、追加のコマンドやアクションを実行する必要はありません。インストールされた任意のバージョンのアプリケーションは、インストール元のストリームに関係なく、その他のバージョンと同じように実行できます。インストール後のアプリケーションは、DNFを使用してインストールした別のネイティブ・アプリケーションとまったく同様に動作します。

1.5.1 使用可能なモジュールの表示

通常はアプリケーション・ストリーム・リポジトリ内にある使用可能なモジュールは、dnf module listコマンドを使用してリスト表示できます。詳細なモジュール情報を取得する場合は、dnf module infoコマンドを使用できます。

次の表では、アプリケーション・ストリームのコンテンツ詳細を表示するために一般的に使用される一部のコマンドについて説明します。

コマンド構文

操作の説明

dnf module info module-name

モジュールに関する情報を表示します。

dnf module info --profile module-name

デフォルトのストリームを使用したモジュールのプロファイルによってインストールされるパッケージに関する情報を表示します。

dnf module info --profile module-name:stream

指定のストリームを使用したモジュールのプロファイルによってインストールされるパッケージに関する情報を表示します。

dnf module list

使用可能なすべてのモジュールをリストし、モジュール名、ストリーム、プロファイルおよびサマリーを表示します。各モジュールとストリームは個別の行にリストされます。プロファイルは、モジュールとストリームごとにカンマ区切り値を使用して示されます。

デフォルト値は、文字[d]で示されます。有効なモジュールは文字[e]で示されます。無効なモジュールは文字[x]で示されます。インストールされたモジュール、ストリームおよびプロファイルは、[i]という文字で示されます。

dnf module list module-name

モジュールの現在のステータスをリストします。

dnf module provides package

指定したパッケージを提供するモジュールについての情報を表示します。

パッケージがモジュールの外部でのみ使用可能な場合、コマンド出力は空になります。

1.5.2 モジュールのインストール・コマンド

次の表に、アプリケーション・ストリームからのコンテンツのインストールに使用するコマンドを示します。

コマンド構文

操作の説明

追加情報

dnf install package

指定したパッケージをインストールします。

モジュール・ストリームによってパッケージが提供されている場合、dnfコマンドは必要なモジュール・ストリームを解決し、パッケージのインストール時にストリームを自動的に有効にします。さらに、このプロセスはパッケージの依存関係に対して再帰的です。多くのモジュール・ストリームが要件を満たす場合は、デフォルトのストリームが使用されます。

パッケージがデフォルトとしてマークされていないモジュール・ストリームによって提供されている場合や有効になっていない場合は、そのパッケージは該当するモジュール・ストリームを手動で有効にするまで認識されません。

dnf module enable module-name:stream

モジュールまたはストリームを有効にします。

このコマンドは、パッケージがシステムで使用できるようにモジュールを有効にしますが、そのモジュールを今すぐインストールする必要がない場合に使用します。

モジュールにはデフォルト・ストリームが定義されていないものがあります。その場合は、ストリームを明示的に指定する必要があります。ストリームを明示的に指定したときに、デフォルトとして代替ストリームが設定されている場合は、その後のインストール・リクエストのデフォルト・ストリームが有効化したストリームによってオーバーライドされます。

dnf install @module-name

かわりに、次を使用することもできます。

dnf module install module-name

モジュールをインストールします。@文字は、モジュールのインストールを示す短縮形です。

モジュールにデフォルトのストリームが定義されている場合や特定のストリームを有効にしている場合は、コマンド構文にstreamcolonを含める必要はありません。

一部のモジュールにはデフォルトのストリームが定義されない点に注意してください。

dnf install @module-name:stream

かわりに、次を使用することもできます。

dnf module install module-name:stream

特定のストリームとデフォルトのプロファイルを使用してモジュールをインストールします。

 

dnf install @module-name:stream/profile

かわりに、次を使用することもできます。

dnf module install module-name:stream/profile

特定のストリームとプロファイルを使用してモジュールをインストールします。

 

1.5.3 モジュラの依存性とストリームの変更について

一般に、コンテンツを提供するパッケージは別のパッケージに依存していて、通常は必要な依存関係バージョンを指定しています。これと同じメカニズムは、モジュールに含まれているパッケージにも当てはまります。パッケージとそのパッケージの特定のバージョンをモジュールとストリームにグループ化するときには、いくつかの追加の制約があります。たとえば、モジュール・ストリームでは、そこに含まれていて提供されるパッケージとは無関係に、別のモジュールのストリームに対する依存関係を宣言できます。パッケージまたはモジュールの操作後に、すべての基盤となるインストール済パッケージの依存関係ツリー全体が、パッケージが宣言するすべての条件を満たしている必要があります。また、モジュール・ストリームのすべての依存関係も満たされている必要があります。

こうした追加の制約により、パッケージ操作の実行前の慎重な検討が必要になります。これは、有効化されているモジュール・ストリームを変更しても、その変更を完全に制御できるように自動的にパッケージが操作されることがないためです。ただし、ツールは常に実行するアクションのサマリーを表示します。

モジュールとストリームに対してパッケージ操作を実行する場合は、次のガイドライン、注意事項および警告に注意してください。

  • モジュール・ストリームを有効にする場合は、追加モジュールのストリームも有効にする必要があります。

  • ストリームからモジュール・ストリーム・プロファイルまたはパッケージをインストールする場合は、追加モジュールのストリームを有効にすることと、追加パッケージをインストールすることも必要になります。

  • モジュールのストリームを無効にする場合は、パッケージが自動的に削除されないため、その他のモジュール・ストリームも無効にする必要もあります。

  • パッケージを削除する場合は、追加パッケージの削除が必要になることがあります。いずれかのパッケージがモジュールによって提供されている場合は、モジュール・ストリームは追加のインストールの準備で有効のままになります。これは、そのストリームからのパッケージが続けてインストールされない場合でも同じです。これにより、未使用のyumリポジトリの動作がミラー化されます。

  • モジュールに対して有効化されているストリームの切り替えは、現在のストリームをリセットして新しいストリームを有効化することと同じです。

    ノート

    有効なストリームを切り替えても、インストールされているパッケージは自動的に変更されません。また、それまでのストリームで提供されるパッケージとそれに依存するパッケージの削除や、新しいストリームのパッケージのインストールは、すべて手動で実行する必要があるタスクです。

  • インストール時にアップグレード・スクリプトが実行される可能性があるため、現在デフォルトでインストールされているもの以外はモジュールのストリームを直接インストールしないようにしてください。

モジュールの依存関係には、RPMの依存関係と同様の通常のパッケージ依存関係が含まれます。ただし、モジュールの可用性は、モジュール・ストリームの有効化にも依存します。モジュール・ストリームは、別のモジュール・ストリームに依存することもあります。

モジュラ・パッケージに対する非モジュラ・パッケージの依存関係は、モジュラ・パッケージがデフォルトとしてマークされているモジュール・ストリームによって提供されている場合にのみアプリケーション・ストリームで使用されます。モジュラ・パッケージが非モジュラ・パッケージに依存している場合は、モジュールとストリームの選択がシステムによって常に保持されます。ただし、それらの選択を明示的に指定して変更することはできません。モジュラ・パッケージは、このパッケージを提供するモジュールの現在有効なストリームから更新を受け取り、別のストリームからのバージョンにアップグレードしません。

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

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

インストール済のモジュールを削除すると、現在有効なモジュール・ストリームのプロファイルによってインストールされたすべてのパッケージと、それらに依存するパッケージおよびモジュールも削除されます。このモジュール・ストリームからインストールしたパッケージのうちプロファイルにリストされていないものは、システムにインストールされたままになりますが手動で削除できます。

ノート

インストール済のモジュールを削除するための前提条件として、いくつかのプロファイルが削除するモジュールにすでにインストールされている必要があります。

インストール済のモジュールを削除するには、次の手順を実行します。

  1. モジュールを削除します。

    sudo dnf module remove module-name

    前の例のmodule-nameには削除するモジュールの名前を指定します。

    dnf module removeコマンドでは、このモジュールからインストールされたすべてのパッケージを削除します。変更内容のサマリーと確定の要求が表示されます。

  2. モジュール・ストリームを無効にします。

    sudo dnf module disable module-name

    前の例のmodule-nameには無効にするモジュールの名前を指定します。

    変更内容のサマリーと確定の要求が表示されます。

  3. モジュール・ストリームから手動でインストールしたパッケージを削除します。

    sudo dnf remove package ...

    前の例のpackage ... は削除するパッケージ(複数可)の名前です。

    変更内容のサマリーと確定の要求が表示されます。

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

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

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

ノート

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

  1. 代替のストリームがインストールできるようにするために、モジュールをリセットします。

    sudo dnf module reset module-name

    代替のストリームをインストールする前にモジュールのリセットに失敗した場合は、モジュールの有効なストリームの切替えができないことを通知するエラーが返されます。

  2. 次のようにして、モジュールの別のストリームのプロファイルをインストールします。

    sudo dnf install @module-name:stream

    前述の例のmodule-nameはモジュールの名前です。また、streamは目的のストリームです。

    変更内容のサマリーと確定の要求が表示されます。

    前のコマンドを実行すると、新しいストリームが有効になり、現在のストリームは無効になります。追加のモジュール・ストリームとパッケージに対する変更が必要になることがあります。

  3. 以前のモジュール・ストリームからインストールしたパッケージのうち、前のステップでインストールしたプロファイルにリストされていないパッケージを更新またはダウングレードします。

    sudo dnf distro-sync

    変更内容のサマリーと確定の要求が表示されます。

  4. 以前のモジュール・ストリームからインストールした残りのパッケージを手動で削除します。

    sudo dnf remove package ...

    前の例のpackage ... は削除するパッケージ(複数可)の名前です。

    変更内容のサマリーと確定の要求が表示されます。

1.6 DNFセキュリティ・オプションの使用

DNFには、Oracle Linux 8にインストールされているパッケージで利用可能なセキュリティおよびエラッタの更新を管理するための要件を処理する統合オプションが含まれています。

次のようにして、システムで使用可能なエラッタをリストします。

sudo dnf updateinfo list
...

コマンドからの出力では、利用可能なエラッタがID順にソートされ、各エラッタがセキュリティ・パッチ(severity/Sec.)、バグ修正(bugfix)または機能拡張(enhancement)のいずれであるかが指定されます。セキュリティ・パッチは、重大度(ImportantModerateまたはLow)別にリストされます。

次の例のように、--sec-severityオプションを使用すると、セキュリティ・エラッタを重大度でフィルタ処理できます。

sudo dnf updateinfo list --sec-severity=Moderate
...

エラッタIDではなく、共通脆弱性(CVE) ID順にセキュリティ正誤表をリストするには、キーワードcvesを引数として指定します。

sudo dnf updateinfo list cves
...

同様に、キーワードbugfixenhancementおよびsecurityを使用して、すべてのバグ修正、拡張およびセキュリティ・エラッタのリストをフィルタ処理します。

次の例のように、--cveオプションを使用すると、指定したCVEに対応するエラッタを表示できます。

sudo dnf updateinfo list --cve CVE-2020-4000

次の例のように、詳細情報を表示するには、listではなくinfoを指定します。

sudo dnf updateinfo info --cve CVE-2020-4000

セキュリティ関連のエラッタが利用可能なすべてのパッケージを最新バージョンのパッケージ(パッケージに不具合修正または新機能が含まれるがセキュリティ・エラッタは含まれない場合でも)に更新するには、次のコマンドを使用します。

sudo dnf --security update

すべてのパッケージをセキュリティ・エラッタが含まれる最新バージョン(セキュリティ・エラッタが含まれない新しいパッケージは対象外)に更新するには、次のコマンドを使用します。

sudo dnf --security upgrade-minimal

すべてのカーネル・パッケージを、セキュリティ・エラッタが含まれる最新バージョンに更新するには、次のコマンドを使用します。

sudo dnf --security upgrade-minimal kernel*

CVEまたは正誤表に対応するパッケージのみを更新するには、dnf update --cveコマンドとdnf update --advisoryコマンドを使用します。次に例を示します。

sudo dnf update --cve CVE-2020-4000
sudo dnf update --advisory ELSA-2020-4010
ノート

一部の更新では、システムを再起動する必要があります。デフォルトでは、ブート・マネージャによって最新のカーネル・バージョンが自動的に有効化されます。

詳細は、dnf(8)マニュアル・ページを参照してください。

1.7 DNF自動ツールを使用したシステムの最新状態の維持

DNF自動ツールは追加パッケージとして提供され、最新のセキュリティ・パッチと不具合修正でシステムを最新の状態に保つためにdnf upgradeを手動で実行するかわりに使用できます。このツールは、更新の自動通知を提供し、更新をダウンロードして、systemdタイマーを使用して自動的に更新をインストールできます。

dnf-automaticパッケージをインストールして、systemd dnf-automatic.timerタイマー・ユニットを有効にすると、このサービスの使用を開始できます。

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

DNF自動ツールを構成する場合は、/etc/dnf/automatic.conf構成ファイルを編集してからタイマー・ユニットを再起動します。

追加の代替タイマー・ユニットが使用可能なことと、構成ファイルで指定されたデフォルト構成をオーバーライドできることに注意してください。多くの場合、そのようなタイマー・ユニットは、特定の動作を実行するための便利なショートカットとして使用されます。

  • dnf-automatic-notifyonly.timer: 使用可能な更新について通知します

  • dnf-automatic-download.timer: パッケージの更新をダウンロードしますが、インストールしません

  • dnf-automatic-install.timer: パッケージの更新をダウンロードして自動的にインストールします

必要な動作を有効にするには、次のコマンドを実行します。

sudo systemctl enable --now dnf-automatic-install.timer

1.8 ISOイメージを使用したローカルYumリポジトリの作成

ノート

システムには、Oracle Linuxメディア・パックDVDイメージ全体をホストするために十分な記憶域が存在する必要があります(Oracle Linux 8の場合は約6.6GB)。

ローカルyumリポジトリを作成するには、次の手順を実行します(たとえば、システムでインターネットにアクセスできない場合)。

  1. インターネットにアクセスできるシステムで、https://edelivery.oracle.com/linuxにあるOracle Software Delivery Cloudからリムーバブル・ストレージ(USBメモリー・スティックなど)にOracle Linux DVDイメージ全体をダウンロードします。

    ノート

    ISOが正常にコピーされたことを確認するには、次のように、そのチェックサムをedelivery.oracle.comに表示されているダイジェスト値と比較します。

    sudo sha1sum OracleLinux8.iso
    203b8185d8c6551378b41da26b088f23e131343f OracleLinux8.iso
  2. リムーバブル・ストレージを、ローカルyumリポジトリを作成するシステムに移動し、DVDイメージをローカル・ファイル・システムのディレクトリにコピーします。

    sudo cp /media/USB_stick/OracleLinux8.iso /ISOs
  3. 適切なマウント・ポイント(/var/OSimage/OL8_x86_64など)を作成し、それにDVDイメージをマウントします。

    sudo mkdir -p /var/OSimage/OL8_x86_64
    sudo mount -o loop,ro /ISOs/OracleLinux8.iso /var/OSimage/OL8_x86_64
    ノート

    読取り専用のマウント・オプション(ro)を含めて、ISOの内容が誤って変更されないようにします。

  4. 再起動後にシステムで常にDVDイメージがマウントされるように、/etc/fstabにエントリを作成します。

    /ISOs/OracleLinux8.iso /var/OSimage/OL8_x86_64 iso9660 loop,ro 0 0
  5. すべての既存のyumリポジトリを無効にします。

    /etc/yum.repos.dディレクトリで、既存のリポジトリ・ファイルを編集し、enabled=0を設定して、すべてのエントリを無効にします。また、1.2.4項「DNF config-managerプラグインの使用」で説明したように、次のコマンドを実行してすべてのリポジトリを無効にすることもできます。

    sudo dnf config-manager --disable \*
  6. 新しいリポジトリ・ファイル(/etc/yum.repos.d/OL8.repoなど)に次のエントリを作成します。次に例を示します。

    [OL8_BaseOS]
    name=Oracle Linux 8 x86_64 ISO  BaseOS
    baseurl=file:///var/OSimage/OL8_x86_64/BaseOS
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1 
    enabled=1
    
    [OL8_AppStream]
    name=Oracle Linux 8 x86_64 ISO AppStream
    baseurl=file:///var/OSimage/OL8_x86_64/AppStream
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1 
    enabled=1 

    正しいGPGキー・ファイルは、gpgkeyパラメータで指定したパスに存在する必要があります。すべてのOracle Linuxリリース・パッケージの署名に使用されるGPGキーはOracle Linux yumサーバーからダウンロードできますが、このキーはISO自体でも提供されます。詳細は、https://yum.oracle.com/faq.html#a10を参照してください。

  7. dnfキャッシュをクリーン・アップします。

    sudo dnf clean all
  8. dnfコマンドを使用してリポジトリにアクセスできるかどうかをテストします。

    sudo dnf repolist
    Loaded plugins: refresh-packagekit, security
    ...
    repo id                          repo name                                status
    OL8_AppStream                    Oracle Linux 8 x86_64 ISO AppStream      5,783
    OL8_BaseOS                       Oracle Linux 8 x86_64 ISO  BaseOS        1,697
    repolist: 7,480

1.9 ISOイメージを使用したローカルYumサーバーの設定

ローカルyumサーバーを設定するには、次の手順を実行します(たとえば、インターネットにアクセスできないシステムのネットワークが存在する場合)。

  1. yumサーバーにするシステムを1つ選択し、1.8項「ISOイメージを使用したローカルYumリポジトリの作成」の手順に従って、そこにローカルyumリポジトリを作成します。

  2. ローカルyumリポジトリからApache HTTPサーバーをインストールします。

    sudo dnf install httpd
  3. システムでSELinuxが強制モードで有効になっている場合は、次の手順を実行します。

    1. semanageコマンドを使用して、リポジトリのルート・ディレクトリ階層のデフォルト・ファイル・タイプをhttpd_sys_content_tとして定義します。

      sudo /usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/var/OSimage(/.*)?"
    2. restoreconコマンドを使用して、リポジトリ全体にファイル・タイプを適用します。

      sudo /sbin/restorecon -R -v /var/OSimage
    ノート

    semanageおよびrestoreconコマンドは、policycoreutils-pythonおよびpolicycoreutilsパッケージで提供されます。

  4. /var/www/htmlにリポジトリを指し示すシンボリック・リンクを作成します。

    sudo ln -s /var/OSimage /var/www/html/OSimage
  5. HTTPサーバーの構成ファイル(/etc/httpd/conf/httpd.conf)を次のように編集します。

    1. サーバーの解決可能なドメイン名をServerNameの引数に指定します。

      ServerName server_addr:80

      サーバーが解決可能なドメイン名を持たない場合、かわりにそのIPアドレスを入力します。

    2. <Directory "/var/www/html">セクションのOptionsディレクティブの設定で、次のようにIndexesおよびFollowSymLinksを指定し、ディレクトリ階層が参照可能になっていることを確認します。

      Options Indexes FollowSymLinks
    3. 変更内容をファイルに保存します。

  6. Apache HTTPサーバーを起動して、再起動後に開始するように構成します。

    sudo systemctl start httpd
    sudo systemctl enable httpd
  7. システムでファイアウォールを有効にしている場合、次のようにTCPポート80でHTTP接続リクエストを受信できるようにそれを構成します。

    sudo firewall-cmd --zone=zone --add-port=80/tcp
    sudo firewall-cmd --permanent --zone=zone --add-port=80/tcp
  8. サーバーと各クライアント・システムに既存のyumリポジトリをすべて無効にします。

    /etc/yum.repos.dディレクトリで、既存のリポジトリ・ファイルを編集し、enabled=0を設定して、すべてのエントリを無効にします。1.2.4項「DNF config-managerプラグインの使用」で説明したようにyum-utilsパッケージをインストールした場合は、次のコマンドを実行してすべてのリポジトリを無効にできます。

    sudo dnf config-manager --disable \*
  9. サーバーのリポジトリ・ファイル(/etc/yum.repos.d/OL8.repoなど)を編集します。

    [OL8_BaseOS]
    name=Oracle Linux 8 x86_64 ISO BaseOS
    baseurl=http://server_addr/OSimage/OL8_x86_64/BaseOS
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1 
    enabled=1
    
    [OL8_AppStream]
    name=Oracle Linux 8 x86_64 ISO AppStream
    baseurl=http://server_addr/OSimage/OL8_x86_64/AppStream
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1 
    enabled=1 

    server_addrには、ローカルYumサーバーのIPアドレスまたは解決可能なホスト名を代入します。

  10. サーバーと各クライアントで、リポジトリ・ファイルをコピーして、該当するパッケージの署名に使用されるGPGキー・ファイルをコピーしてインポートします。ISOに含まれているキーをインポートすることも、Oracle Linux yumサーバーからキーをダウンロードしてインストールすることもできます。

    sudo wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol8 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    sudo gpg --import --import-options show-only /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
  11. 各クライアント上で、リポジトリ・ファイルをサーバーから/etc/yum.repos.dディレクトリにコピーします。

  12. サーバーと各クライアントで、dnfコマンドを使用してリポジトリにアクセスできるかどうかをテストします。

    sudo dnf repolist
    Loaded plugins: refresh-packagekit, security
    ...
    repo id                          repo name                                status
    OL8_AppStream                    Oracle Linux 8 x86_64 ISO AppStream      5,783
    OL8_BaseOS                       Oracle Linux 8 x86_64 ISO  BaseOS        1,697
    repolist: 7,480

1.10 DNFの詳細

DNFの詳細は、https://dnf.readthedocs.io/en/latest/index.htmlを参照してください。

Oracle Linux yumサーバーに関するよくある質問への回答は、https://yum.oracle.com/faq.htmlを参照してください。