ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。ラボを完了する際は、これらの値をクラウド環境に固有の値に置き換えてください。
Oracle LinuxでのDNFの使用
イントロダクション
Oracle Linuxには、システム・パッケージをインストールおよび管理するためのクライアント・ソフトウェアとして、Dandified Yum (DNF)に基づくdnfユーティリティが用意されています。これらのパッケージは、Unbreakable Linux Network (ULN)またはOracle Linux yumサーバーから入手できます。ソフトウェア・パッケージは、標準のdnfコマンドを使用してシステムにインストールします。どちらを使用するかが、システムが適切なULNチャネルのサブスクリプションまたはyumリポジトリを有効にしているかどうかによって異なります。パッケージのインストールまたはアップグレード時に、dnfはパッケージの依存関係と要件を自動的に処理します。
DNFは、従来のyumのコマンドと比較して、機能性とパフォーマンスを大幅に向上させ、モジュラー・コンテンツやより安定した文書化されたAPIを含む多くの新機能を提供します。
目的
このチュートリアルでは、次のことを学習します。
- DNFリポジトリの操作
- パッケージとモジュールの管理
- セキュリティ更新のインストール
- パッケージ・グループの活用
- DNF履歴機能の使用
- パッチ・アップグレードの自動化
前提条件
-
単一のOracle Linuxシステムの最小値
-
各システムには、Oracle Linuxがインストールされ、次のように構成されている必要があります。
- sudoアクセス権を持つroot以外のユーザー・アカウント
- インターネットへのアクセス
Oracle Linuxのデプロイ
ノート:独自のテナンシで実行している場合は、演習環境をデプロイする前に、linux-virt-labs GitHubプロジェクトREADME.mdを読み、前提条件を満たしてください。
-
Luna Desktopでターミナルを開きます。
-
linux-virt-labsGitHubプロジェクトをクローニングします。git clone https://github.com/oracle-devrel/linux-virt-labs.git -
作業ディレクトリに変更します。
cd linux-virt-labs/ol -
必要なコレクションをインストールします。
ansible-galaxy collection install -r requirements.yml -
演習環境をデプロイします。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6"空き演習環境には、localhostで実行されている再生に対して
ansible_python_interpreterを設定する追加の変数local_python_interpreterが必要です。この変数は、python3.6モジュールにあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9または10を使用するには、
-e instance_shape="VM.Standard3.Flex"を追加するか、-e os_version="10"、-e os_version="9"または-e os_version="8"をデプロイメント・コマンドに設定します。重要:プレイブックが正常に実行され、一時停止タスクに到達するまで待ちます。プレイブックのこの段階で、Oracle Linuxのインストールが完了し、インスタンスの準備が整いました。前のプレイをメモしておきます。このプレイでは、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、およびラボの実行中に必要となるその他のデプロイメント情報が出力されます。
DNFリポジトリの操作
-
端末を開き、SSHを介してol-node-01インスタンスに接続します。
ssh oracle@<ip_address_of_instance> -
有効なリポジトリのリストを取得します。
dnf repolistDNFは、
/etc/yum.repos.dディレクトリ内で.repoで終わるファイルを検索します。allオプションを渡すと、有効になっているリポジトリと無効になっているリポジトリの両方のリストを表示できます。リポジトリ・ファイルでは、1つ以上のリポジトリを定義し、enabled=1の場合はリポジトリを有効にし、enabled=0の場合はリポジトリを無効にすることを検討できます。 -
リポジトリを有効にします。
Oracle Linux 10:
sudo dnf config-manager --enable ol10_codeready_builderOracle Linux 9:
sudo dnf config-manager --enable ol9_codeready_builderOracle Linux 8:
sudo dnf config-manager --enable ol8_codeready_builder -
リポジトリを無効にします。
Oracle Linux 10:
sudo dnf config-manager --disable ol10_codeready_builderOracle Linux 9:
sudo dnf config-manager --disable ol9_codeready_builderOracle Linux 8:
sudo dnf config-manager --disable ol8_codeready_builder -
リポジトリをインストールします。
Oracle Linuxには、様々な製品の事前構築済リポジトリがパッケージ形式で出荷されます。これらを検索し、インストールして有効にできます。
dnf search oracle*release*Oracle Linux 10:
sudo dnf install -y oracle-instantclient-release-el10Oracle Linux 9:
sudo dnf install -y oracle-instantclient-release-el9Oracle Linux 8:
sudo dnf install -y oracle-instantclient-release-el8推奨されませんが、次の方法でリポジトリをインストールすることもできます。
/etc/yum.repos.dに新しい.repoファイルを直接作成します。- ローカルまたはURLから格納されたリポジトリ・ファイルをインストールできる
dnf config-manager --add-repo <repo_file>の使用
-
DNFキャッシュを削除します。
パフォーマンスを支援するために、DNFは
/var/cache/dnfにデータをキャッシュします。このキャッシュされたデータが古くなり、dnfコマンドが失敗する場合があります。この問題を修正するには、キャッシュされたすべてのアイテムを削除します。dnf clean allDNFでは、様々なコマンドを実行すると、このキャッシュが時間の経過とともに自動的に再構築されます。コマンドの失敗をトラブルシューティングするには、キャッシュをクリアしてから、失敗したコマンドを再試行します。
パッケージおよびモジュールの管理
Oracle Linux 10のノート: DNFモジュラリティ(モジュールおよびストリーム)は、Oracle Linux 10では使用できません。AppStreamリポジトリから標準パッケージをインストールできますが、以前のリリースと同様にモジュールまたはストリームを有効化またはインストールすることはできません。
DNFモジュラリティが使用されるステップでは、手順はOracle Linux 8およびOracle Linux 9にのみ適用されます。
-
有効なリポジトリから使用可能なパッケージのリストを取得します。
dnf listinstalledまたはavailableオプションを使用し、dnf list available gitなどの特定のパッケージ名を要求することで、返される出力を絞り込むことができます。 -
使用可能なモジュールを一覧表示します。
dnf module list出力には、システムで使用可能なモジュール、関連するストリームおよびプロファイルが表示されます。ここでは:
Name: モジュール名Stream: ストリーム・バージョンProfiles: 使用可能なプロファイルとそのステータスcommon: 強化された本番対応デプロイメントであり、デフォルト・プロファイルです。development: モジュールに変更を加えるために必要なパッケージをインストールしますminimal: 作業アプリケーションを提供する最小のパッケージ・セットをインストールします。
出力の最後にある Hintを使用して、enabled、disabled、installed、または defaultであるストリームとプロファイルを判別します。
パッケージと同様に、モジュール名を
listオプションに渡して、そのモジュールのみのステータスを確認できます。 -
パッケージまたはモジュールに関する情報を取得します。
dnf info zshこの場合、
zshはパッケージ名です。モジュールについても同じことを行いますが、moduleコマンドを追加して、dnf module info phpなどの特定のモジュールを追加します。特定のモジュール・ストリームに関する情報が必要な場合は、--profileをモジュール名ではなくmodule:streamとともに渡します。dnf module info --profile php:8.2 -
使用可能なパッケージまたはインストール済みパッケージを検索します。
dnf search php -
特定のファイル名またはコマンドを提供するパッケージを検索します。
providesコマンド(別名whatprovides)では、ファイル名に一致するパッケージが検索されます。フルパスを指定しない場合、DNFは/usr/sbinおよび/usr/binをファイル名に追加します。レガシー目的で、/sbinおよび/binも追加されます。dnf provides sudo -
パッケージをインストールします。
sudo dnf install tmuxyと応答して、パッケージのインストールを確認します。-yオプションを渡すことによって、今後この追加ステップを回避します。DNFでは、デフォルトで有効なリポジトリからパッケージのみがインストールされます。ただし、--enablerepo=<repo name>オプションを渡すことによって、そのデフォルトの動作をバイパスできます。 -
パッケージを再インストールします。
sudo dnf reinstall -y tmuxこのコマンドは、基本的に
dnf remove、次にdnf installを実行します。重要な違いは、再インストールを使用すると、パッケージに関連付けられたファイルのカスタム構成が維持されることです。 -
モジュールを有効にします。
モジュールからパッケージをインストールする前に、それを有効にする必要があります。
Oracle Linux 9:
sudo dnf module -y enable nginx:1.22Oracle Linux 8:
sudo dnf module -y enable nginx -
モジュールを取り付けます。
Oracle Linux 9:
sudo dnf module install -y nginx:1.22Oracle Linux 8:
sudo dnf module install -y nginx:1.14パッケージのインストール後、
sudo dnf module list nginxを実行すると、1.22ストリームの共通[d]プロファイルの横に[i]が表示されます。 -
パッケージまたはモジュールを削除します。
sudo dnf remove -y tmux同様に、同じ構文を使用してモジュールを削除するには、パッケージ名を module:stream/profileに置き換えます。
-
モジュールを切り替えます。
モジュール・ストリームを切り替えると、コンテンツはシステム上の現在のバージョンのものとは別のバージョンにアップグレードまたはダウングレードされます。また、追加の依存関係のインストールや、不要になったパッケージの削除も処理します。
sudo dnf module -y switch-to nginx:1.24/common -
モジュールを無効にします。
sudo dnf module -y disable nginxモジュールを無効にすると、インストールされているプロファイルが削除され、関連するすべてのモジュールストリームが使用できなくなり、モジュラーRPMSがパッケージセットに含まれなくなります。DNFが競合を検出すると、操作は拒否されます。モジュールを無効にする理由の1つは、新しいパッケージがデフォルトのリポジトリおよびappstreamに存在することです。
-
モジュールのリセット。
この操作により、モジュールの状態が有効化または無効化されなくなるように設定されます。DNFはすべてのプロファイルを削除し、デフォルト・プロファイルのパッケージのみを使用できます。
sudo dnf module -y reset nginx
セキュリティ更新のインストール
-
使用可能なすべてのエラッタを一覧表示します。
dnf updateinfo list出力には、有効なリポジトリとそれに続く各更新が表示されます。DNFは、使用可能なエラッタをID順にソートし、そのタイプによってさらに識別します。
Severity/Sec: Priority/Security patchbugfix: バグ修正enhancement: 機能拡張
コマンドに cves、bugfix、または securityを追加して、その特定のエラータタイプだけに出力を絞り込むことができます。
--installedを渡して、ホストにインストールされているセキュリティ修正のリストを取得することもできます。 -
使用可能なエラッタのサマリーを表示します。
dnf updateinfo summary -
重大度に基づいたセキュリティ・アップグレードのリストを取得します。
Critical、Important、Moderate、または Lowを
--sec-severityオプションに渡すことができます。dnf updateinfo list --sec-severity=ImportantDNFでは、他のオプションを
listコマンドに渡すことができます。--advisory <Advisory ID>を使用して特定のアドバイザを取得するか、--cve <CVD IDを使用して特定のCVEを取得できます。listのかわりにinfoコマンドを使用し、正確なオプションを使用すると、特定のアドバイザまたはCVEに関する詳細情報が提供されます。 -
各パッケージを最新バージョンに更新します。
sudo dnf upgrade -yオプションで、
-xオプションに続けてパッケージ名を指定して、アップグレードから特定のパッケージを除外できます。Oracle Linuxではすべてのエラッタを適用することをお薦めしますが、upgradeコマンドには次のオプションがあります。--cve: 単一のCVE IDを更新します。--advisory: 単一のアドバイザIDを更新します。--security: すべてのセキュリティ関連のエラッタを更新します。
または、ユーザーは
sudo dnf upgrade-minimalを実行して、バグ修正、拡張またはセキュリティ問題の修正を提供するパッケージにのみ更新を適用できます。重要: カーネルの更新後、必ずシステムをリブートしてください。リブートが実現できないシステムを実行する場合は、Oracle Kspliceを使用してカーネル・パッチを適用することをお薦めします。
パッケージ・グループの管理
DNFでは、パッケージグループをインストール、更新、または削除できます。これらのグループは、共通の目的に役立つ依存パッケージの集合です。
-
使用可能なグループをリストします。
dnf group list -
グループに含まれるグループのリストを取得します。
dnf group info "Server with GUI"Server with GUIは、GNOMEグラフィカルデスクトップをインストールします。
-
グループに含まれる個々のパッケージを表示します。
dnf group info Core -
グループをインストールします。
sudo dnf group install "Server with GUI" --assumeno--assumenoオプションは、自動的に「いいえ」と回答し、インストールをスキップしてこのチュートリアルの時間を節約します。このオプションをコマンドから除外し、それを-yオプションに置き換えて自動的にインストールします。DNFには、グループを更新および削除するためのdnf group updateおよびdnf group removeコマンドが用意されています。
DNF履歴機能の使用
DNF履歴機能には、dnfコマンドによって実行されたすべてのアクションが表示されます。履歴機能では、特定のDNFトランザクションの取消し、REDOおよびロールバックが可能です。DNF履歴に加えて、パッケージのインストール、更新および削除も/var/log/dnf.logファイルに記録されます。
-
すべてのDNFトランザクションをリストします。
dnf historydnf history info <transaction ID>を実行して、いずれかのトランザクションに関連する情報を取得できます。 -
特定のトランザクションのロールバック。
rollbackオプションは、指定された<transaction ID>の後にすべてのトランザクションを元に戻します。単一のトランザクションのみを戻し処理する場合は、かわりにundoを使用します。sudo dnf history rollback <transaction ID>DNFの
history rollbackコマンドは、トランザクションIDを増分し、ロールバックを一意のトランザクションとして記録します。 -
特定のトランザクションを繰り返します。
特定のトランザクションを
redoし、各ステップを繰り返すことができます。sudo dnf history redo <transaction ID>
パッチ適用の自動化
dnf upgradeを手動で実行するかわりに、DNF自動ツールを使用することもできます。このツールは、systemdタイマーを使用して、アップグレードの自動通知、ダウンロードおよびパッケージの自動インストールを行います。
-
必要なパッケージをインストールし、タイマーを有効にします。
sudo dnf install dnf-automatic -ysudo systemctl enable --now dnf-automatic.timer -
デフォルトの upgrade_type構成を表示します。
DNF自動ツールの構成ファイルは
/etc/dnf/automatic.confです。デフォルトでは、自動アップグレードは使用可能なすべてのアップグレードに適用されます。upgrade_typeパラメータをsecurityに変更して、セキュリティ・アップグレードのみを使用できます。grep upgrade_type /etc/dnf/automatic.conf
次のステップ
このチュートリアルでは、Oracle Linuxシステムでソフトウェア・パッケージを管理し、最新のセキュリティ修正を使用してソフトウェア・パッケージを最新の状態に保つ方法を説明します。そのため、システムを更新し、Oracle Linuxの詳細およびトレーニングについて「関連リンク」セクションを確認してください。
関連リンク
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、Oracle Learning Explorerになるには、education.oracle.com/learning-explorerにアクセスしてください。
製品ドキュメントについては、Oracle Help Centerを参照してください。