ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
Oracle LinuxでDNFを使用
イントロダクション
次のチュートリアルでは、Oracle LinuxでDandified YUM (DNF)パッケージマネージャーを使用する実用的な例を提供します。このチュートリアルは、Oracle Linux 8以降のユーザーを対象としています。
目的
この演習では、次のことを学習します。
- DNFリポジトリの操作
- パッケージ情報を一覧表示します
- パッケージのインストール、ダウンロードおよび再インストール
- パッケージのアップグレードおよび削除
- DNF履歴機能の使用
- パッケージ・グループの管理
必要事項
- Oracle Linux 8がインストールされているシステム。
DNFリポジトリの操作
ノート:無料の演習環境を使用する場合は、接続やその他の使用方法の手順について、Oracle Linuxの演習の基本を参照してください。
この演習のdnf
コマンドの一部は、sudo
で続行する必要があります。それ以外の場合は、次のメッセージが表示されます: Error: This command has to be run with superuser privileges (under the root user on most systems).
-
オプションまたは引数を指定せずに
dnf
コマンドを実行して、使用方法を表示します。出力をless
にパイプして、一度に1ページを表示します。dnf | less
メインコマンド、プラグインコマンドのリスト、および一般的なDNFオプションのリストが表示されます。[Enter]キーを押して次の行を表示するか、[Space]を押して次のページを表示します。qキーを押して、シェルプロンプトに戻ります。
-
dnf repolist
コマンドを実行して、構成済のソフトウェア・リポジトリをリストします。このコマンドは、デフォルトで有効になっているリポジトリのみを一覧表示します。dnf repolist
-
dnf repoinfo
コマンドを実行して、詳細情報を表示します。このコマンドは、dnf repolist -v
コマンドと同様の出力を生成します。dnf repoinfo
このコマンドを実行すると、DNFリポジトリメタデータが構築プロセスを通過することがあります。
-
dnf repolist
リストが有効なリポジトリ。dnf repolist all
を実行して、無効なリポジトリを含めます。dnf repolist all
-
dnf
コマンドは、/etc/yum.repos.d
ディレクトリで接尾辞.repo
を持つファイルを自動的に検索し、処理中に構成に追加します。このディレクトリを使用して、使用可能にするリポジトリのリポジトリ・ファイルを定義します。/etc/yum.repos.d
ディレクトリの内容を表示します。cd /etc/yum.repos.d ls -l
-
/etc/yum.repos.d
ディレクトリのksplice-ol8.repo
ファイルの内容を表示します。cat ksplice-ol8.repo
このファイルでは、有効になっている(enabled=1)と
ol8_x86_64_userspace_ksplice
(enabled=0)の2つのリポジトリol8_ksplice
が定義されていることに注意してください。リポジトリを有効にするには、ファイルを編集し、enabled=0をenabled=1に変更します。 -
dnf config-manager
コマンドを使用して、リポジトリを有効または無効にすることもできます。次のコマンドを実行して、ol8_ksplice
リポジトリを無効にします。dnf config-manager --disable ol8_ksplice
-
dnf config-manager
コマンドを使用して、ol8_ksplice
リポジトリを有効にします。dnf config-manager --enable ol8_ksplice
ol8_ksplice
リポジトリが本番環境で常に有効になっていることを確認します。 -
パフォーマンスを支援するために、DNFは
/var/cache/dnf
にデータをキャッシュします。このキャッシュ・データが古くなり、dnf
コマンドが失敗する場合があります。この問題を修正するには、dnf clean all
と入力して、キャッシュされているすべてのアイテムを削除できます。dnf clean all
dnf
コマンドは、様々なコマンドを実行すると、このキャッシュを時間とともに自動的に再構築します。この演習で問題が発生した場合は、dnf clean all
コマンドを実行し、失敗したコマンドを再試行してください。
ノート:詳細は、リポジトリを追加するための様々な方法があります。例:
/etc/yum.repos.d
に新しい.repo
ファイルを作成します。dnf config-manager
コマンドを使用して、指定したURLにリポジトリを追加します(たとえば、dnf config-manager --add-repo <https://example.com/my_repository.repo
>)。- リポジトリにRed Hat Package Manager (RPM)インストール・ファイルがある場合は、
dnf install <url_of_repo_rpm_file>
を使用してリポジトリを追加できます。
リスト・パッケージ情報
-
dnf list
コマンドを実行して、有効なすべてのリポジトリで使用可能なすべてのパッケージと、システムにインストールされているすべてのパッケージをリストします。dnf list
-
dnf list installed
コマンドを実行して、システムにインストールされているすべてのパッケージをリストします。dnf list installed
-
dnf list available
コマンドを実行して、すべての有効なリポジトリにインストール可能なすべてのパッケージをリストします。dnf list available
-
dnf info
コマンドの後にソフトウェア・パッケージの名前を指定して実行し、パッケージに関する詳細情報を表示します。たとえば、次のコマンドを実行して、zsh
パッケージに関する情報を表示します。dnf info zsh
-
dnf updateinfo list
コマンドを実行して、使用可能なすべてのエラッタ(セキュリティ、バグ修正および拡張)をリストします。dnf updateinfo list
-
dnf updateinfo summary
コマンドを実行して、使用可能なエラッタのサマリーをリストします。dnf updateinfo summary
-
dnf updateinfo list bugfix
コマンドを実行して、使用可能なバグ修正をリストします。dnf updateinfo list bugfix
-
dnf updateinfo list sec
コマンドを実行して、使用可能なセキュリティ・アップグレードをリストします。dnf updateinfo list sec
-
重大度(クリティカル、重要、中程度、低)に基づいてセキュリティ・アップグレードをリストできます。たとえば、
dnf updateinfo list --sec-severity=Important
コマンドを実行して、重要なセキュリティ・アップグレードをリストします。dnf updateinfo list --sec-severity=Important
-
使用可能なエラッタに関する詳細情報は、
dnf updateinfo info
コマンドを使用してリストできます。dnf updateinfo info
-
特定のエラー(
ELBA-2021-1603
など)の詳細情報を表示するには、dnf updateinfo info --advisory ELBA-2021-1603
コマンドを実行します。dnf updateinfo info --advisory ELBA-2021-1603
-
特定の共通脆弱性(CVE)に関する情報(
CVE-2021-0342
など)をリストするには、dnf updateinfo info --cve CVE-2021-0342
コマンドを実行します。dnf updateinfo info --cve CVE-2021-0342
-
パッケージの正確な名前がわからない場合は、DNFによって検索オプションが提供されます。たとえば、
dnf search php
は、パッケージ名にキーワードphp
を持つパッケージをリストします。dnf search php
-
特定のLinuxコマンドを提供するパッケージを確認するには、
dnf provides
コマンドを使用します。次のコマンドを実行して、sudo
コマンドを提供するパッケージを表示します。dnf provides */sudo
-
dnf provides
コマンドを使用して、特定のファイルを提供するパッケージを確認します。完全修飾ファイル・パスを指定します(例:/etc/sudo.conf
)。dnf provides /etc/sudo.conf
パッケージのインストール、ダウンロードおよび再インストール
-
ソフトウェア・パッケージをインストールするには、
dnf install
コマンドの後にインストールするソフトウェア・パッケージの名前を指定して実行します。tmux
パッケージをインストールするには、次のコマンドを実行します。dnf install tmux
y
と応答して、パッケージのインストールを確認します。 -
プロンプトへの応答を回避するには、
dnf install zsh -y
のように-y
オプションを指定してzsh
パッケージをインストールします。dnf install zsh -y
情報を得るために、無効なリポジトリからパッケージをインストールするには、
dnf --enablerepo=<repo name> install <package name>
コマンドを使用します。 -
ソフトウェア・パッケージをインストールするのではなくダウンロードするには、
dnf download
コマンドの後にダウンロードするソフトウェア・パッケージの名前を指定して実行します。次のコマンドを実行して、nginx
パッケージをダウンロードします。dnf download nginx
ダウンロード・オプションを使用する場合、DNFには
dnf-plugins-core
パッケージが必要です。このパッケージは、最小インストールの一部としてOracle Linux 8にインストールされます。見つからなかった場合は、dnf install dnf-plugins-core
を使用してプラグインをインストールし、ダウンロード・オプションを再試行できます。 -
ダウンロード・オプションはRPMファイルを提供します。
ls
コマンドを使用して、現在のディレクトリのRPMファイルを表示します。ls
RPMファイルが存在しない場合は、
sudo
を使用して、前のダウンロード・コマンドsudo dnf download nginx
を再度実行します。 -
rpm
コマンドを使用してRPMファイルをインストールできますが、dnf
を常に使用して、必要な追加のパッケージ依存関係を自動的に検出してインストールすることをお薦めします。dnf install
と入力し、nginx
RPMファイルの名前を入力します。次に例を示します。前のls
コマンドの出力から取得したRPMファイル名を指定します。dnf install nginx-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64.rpm
-
パッケージに問題がある場合は、
dnf reinstall
コマンドに続けて、再インストールするソフトウェア・パッケージの名前を指定します。次のコマンドを実行して、nginx
パッケージを再インストールします。dnf reinstall nginx
このオプションは、
dnf remove
の実行、dnf install
の実行と同じです。dnf reinstall
を使用する場合の重要な違いは、再インストールではパッケージに関連付けられたファイルのカスタム構成が保持されます。
パッケージのアップグレードと削除
-
インストール済パッケージで使用可能なアップグレードを表示するには、
dnf check-update
と入力します。dnf check-update
-
単一のパッケージをアップグレードするには、
dnf upgrade
に続けてパッケージ名を入力します。確認プロンプトへの応答を回避するには、-y
オプションを含めます。次のコマンドを実行して、binutils
パッケージをアップグレードします。dnf upgrade binutils -y
すべてのパッケージをアップグレードするには、
dnf upgrade
を使用します。使用可能なすべてのアップグレードを適用するのに数分かかるため、このチュートリアルでこのコマンドを実行しないでください。 -
オプションで、
-x
オプションを使用して特定のパッケージをアップグレードから除外できます。たとえば、dnf upgrade -x kernel
を使用して、残りのパッケージを更新する際にカーネル・パッケージを除外します。アップグレードの完了を待機しないようにするには、この演習のプロンプトが表示されたらN
と回答します。dnf upgrade -x kernel
-
特定のエラーまたはCVEに対応するパッケージのみをアップグレードするには、次のコマンドを実行します。アップグレードの完了を待機しないようにするには、このチュートリアルを求められたら
N
と回答します。dnf upgrade --advisory ELBA-2021-1603 dnf upgrade --cve CVE-2021-0342
-
dnf upgrade
を手動で実行するかわりに、DNF自動ツールを使用することもできます。このツールは、アップグレードの自動通知、アップグレードのダウンロード、およびsystemd
タイマーを使用して自動的にインストールします。次のコマンドを実行してパッケージをインストールし、タイマーを有効にします。dnf install dnf-automatic -y systemctl enable --now dnf-automatic.timer
-
DNF自動ツールの構成ファイルは
/etc/dnf/automatic.conf
です。デフォルトでは、自動アップグレードは使用可能なすべてのアップグレードを適用します。upgrade_type
パラメータをsecurity
に変更して、セキュリティ・アップグレードのみを適用できます。このパラメータを表示するには、次のコマンドを入力します。grep upgrade_type /etc/dnf/automatic.conf
-
ソフトウェア・パッケージを削除するには、
dnf remove
コマンドの後に削除するソフトウェア・パッケージの名前を指定して実行します。次のコマンドを実行して、nginx
パッケージを削除します。dnf remove nginx
DNF履歴機能の使用
-
DNF履歴機能には、
dnf
コマンドで実行されたすべてのアクションが表示されます。履歴機能を使用すると、特定のDNFトランザクションの取消し、REDOおよびロールバックを実行できます。すべてのトランザクションを表示するには、dnf history
と入力します。dnf history
いずれかのトランザクションに関連する情報を取得するには、
dnf history info <transaction id>
と入力します。 -
例として
dnf remove nginx
トランザクションを使用すると、dnf history undo <transaction id> -y
と入力して削除をundo
できます。次のコマンドは、dnf remove nginx
がトランザクションID 34であることを前提としています。dnf history undo 34 -y
-
dnf history redo <transaction id> -y
と入力すると、削除をredo
できます。次のコマンドは、dnf remove nginx
がトランザクションID 34であることを前提としています。dnf history redo 34 -y
-
DNF履歴に加えて、パッケージのインストール、更新および削除は/var/log/dnf.logファイルに記録されます。
cat /var/log/dnf.log
パッケージ・グループの管理
-
DNFではさらに、パッケージグループのインストール、更新、または削除が可能です。これらのグループは、共通の目的を提供する依存パッケージのグループです。グループ名を取得するには、
dnf group list
を使用します。dnf group list
-
Server with GUI
グループは、最小限のコンソールにのみインストールされるグラフィカル・デスクトップをインストールします。dnf group info "Server with GUI"
と入力して、グループが他のグループで構成されていることを示します。dnf group info "Server with GUI"
-
これらの小さいグループのいずれか(
Core
など)でdnf group info
を実行して、個々のパッケージを表示します。dnf group info core
-
dnf group install "Server with GUI"
と入力してグループをインストールします。インストールの完了を待機しないようにするには、この演習のプロンプトが表示されたらN
と回答します。dnf group install "Server with GUI"
ノート:情報提供のみを目的として、
dnf group update <group name>
コマンドを使用してグループを更新します。dnf group remove <group name>
コマンドを使用して、グループを削除します。
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。