ノート:

Oracle LinuxでDNFを使用

イントロダクション

次のチュートリアルでは、Oracle LinuxでDandified YUM (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).

  1. オプションまたは引数を指定せずにdnfコマンドを実行して、使用方法を表示します。出力をlessにパイプして、一度に1ページを表示します。

    dnf | less
    

    メインコマンド、プラグインコマンドのリスト、および一般的なDNFオプションのリストが表示されます。[Enter]キーを押して次の行を表示するか、[Space]を押して次のページを表示します。qキーを押して、シェルプロンプトに戻ります。

  2. dnf repolistコマンドを実行して、構成済のソフトウェア・リポジトリをリストします。このコマンドは、デフォルトで有効になっているリポジトリのみを一覧表示します。

    dnf repolist
    
  3. dnf repoinfoコマンドを実行して、詳細情報を表示します。このコマンドは、dnf repolist -vコマンドと同様の出力を生成します。

    dnf repoinfo
    

    このコマンドを実行すると、DNFリポジトリメタデータが構築プロセスを通過することがあります。

  4. dnf repolistリストが有効なリポジトリ。dnf repolist allを実行して、無効なリポジトリを含めます。

    dnf repolist all
    
  5. dnfコマンドは、/etc/yum.repos.dディレクトリで接尾辞.repoを持つファイルを自動的に検索し、処理中に構成に追加します。このディレクトリを使用して、使用可能にするリポジトリのリポジトリ・ファイルを定義します。/etc/yum.repos.dディレクトリの内容を表示します。

    cd /etc/yum.repos.d
    ls -l
    
  6. /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に変更します。

  7. dnf config-managerコマンドを使用して、リポジトリを有効または無効にすることもできます。次のコマンドを実行して、ol8_kspliceリポジトリを無効にします。

    dnf config-manager --disable ol8_ksplice
    
  8. dnf config-managerコマンドを使用して、ol8_kspliceリポジトリを有効にします。

    dnf config-manager --enable ol8_ksplice
    

    ol8_kspliceリポジトリが本番環境で常に有効になっていることを確認します。

  9. パフォーマンスを支援するために、DNFは/var/cache/dnfにデータをキャッシュします。このキャッシュ・データが古くなり、dnfコマンドが失敗する場合があります。この問題を修正するには、dnf clean allと入力して、キャッシュされているすべてのアイテムを削除できます。

    dnf clean all
    

    dnfコマンドは、様々なコマンドを実行すると、このキャッシュを時間とともに自動的に再構築します。この演習で問題が発生した場合は、dnf clean allコマンドを実行し、失敗したコマンドを再試行してください。

ノート:詳細は、リポジトリを追加するための様々な方法があります。例:

  1. /etc/yum.repos.dに新しい.repoファイルを作成します。
  2. dnf config-managerコマンドを使用して、指定したURLにリポジトリを追加します(たとえば、dnf config-manager --add-repo <https://example.com/my_repository.repo>)。
  3. リポジトリにRed Hat Package Manager (RPM)インストール・ファイルがある場合は、dnf install <url_of_repo_rpm_file>を使用してリポジトリを追加できます。

リスト・パッケージ情報

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

    dnf list
    
  2. dnf list installedコマンドを実行して、システムにインストールされているすべてのパッケージをリストします。

    dnf list installed
    
  3. dnf list availableコマンドを実行して、すべての有効なリポジトリにインストール可能なすべてのパッケージをリストします。

    dnf list available
    
  4. dnf infoコマンドの後にソフトウェア・パッケージの名前を指定して実行し、パッケージに関する詳細情報を表示します。たとえば、次のコマンドを実行して、zshパッケージに関する情報を表示します。

    dnf info zsh
    
  5. dnf updateinfo listコマンドを実行して、使用可能なすべてのエラッタ(セキュリティ、バグ修正および拡張)をリストします。

    dnf updateinfo list
    
  6. dnf updateinfo summaryコマンドを実行して、使用可能なエラッタのサマリーをリストします。

    dnf updateinfo summary
    
  7. dnf updateinfo list bugfixコマンドを実行して、使用可能なバグ修正をリストします。

    dnf updateinfo list bugfix
    
  8. dnf updateinfo list secコマンドを実行して、使用可能なセキュリティ・アップグレードをリストします。

    dnf updateinfo list sec
    
  9. 重大度(クリティカル、重要、中程度、低)に基づいてセキュリティ・アップグレードをリストできます。たとえば、dnf updateinfo list --sec-severity=Importantコマンドを実行して、重要なセキュリティ・アップグレードをリストします。

    dnf updateinfo list --sec-severity=Important
    
  10. 使用可能なエラッタに関する詳細情報は、dnf updateinfo infoコマンドを使用してリストできます。

    dnf updateinfo info
    
  11. 特定のエラー(ELBA-2021-1603など)の詳細情報を表示するには、dnf updateinfo info --advisory ELBA-2021-1603コマンドを実行します。

    dnf updateinfo info --advisory ELBA-2021-1603
    
  12. 特定の共通脆弱性(CVE)に関する情報(CVE-2021-0342など)をリストするには、dnf updateinfo info --cve CVE-2021-0342コマンドを実行します。

    dnf updateinfo info --cve CVE-2021-0342
    
  13. パッケージの正確な名前がわからない場合は、DNFによって検索オプションが提供されます。たとえば、dnf search phpは、パッケージ名にキーワードphpを持つパッケージをリストします。

    dnf search php
    
  14. 特定のLinuxコマンドを提供するパッケージを確認するには、dnf providesコマンドを使用します。次のコマンドを実行して、sudoコマンドを提供するパッケージを表示します。

    dnf provides */sudo
    
  15. dnf providesコマンドを使用して、特定のファイルを提供するパッケージを確認します。完全修飾ファイル・パスを指定します(例: /etc/sudo.conf)。

    dnf provides /etc/sudo.conf
    

パッケージのインストール、ダウンロードおよび再インストール

  1. ソフトウェア・パッケージをインストールするには、dnf installコマンドの後にインストールするソフトウェア・パッケージの名前を指定して実行します。tmuxパッケージをインストールするには、次のコマンドを実行します。

    dnf install tmux
    

    yと応答して、パッケージのインストールを確認します。

  2. プロンプトへの応答を回避するには、dnf install zsh -yのように-yオプションを指定してzshパッケージをインストールします。

    dnf install zsh -y
    

    情報を得るために、無効なリポジトリからパッケージをインストールするには、dnf --enablerepo=<repo name> install <package name>コマンドを使用します。

  3. ソフトウェア・パッケージをインストールするのではなくダウンロードするには、dnf downloadコマンドの後にダウンロードするソフトウェア・パッケージの名前を指定して実行します。次のコマンドを実行して、nginxパッケージをダウンロードします。

    dnf download nginx
    

    ダウンロード・オプションを使用する場合、DNFにはdnf-plugins-coreパッケージが必要です。このパッケージは、最小インストールの一部としてOracle Linux 8にインストールされます。見つからなかった場合は、dnf install dnf-plugins-coreを使用してプラグインをインストールし、ダウンロード・オプションを再試行できます。

  4. ダウンロード・オプションはRPMファイルを提供します。lsコマンドを使用して、現在のディレクトリのRPMファイルを表示します。

    ls
    

    RPMファイルが存在しない場合は、sudoを使用して、前のダウンロード・コマンドsudo dnf download nginxを再度実行します。

  5. 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
    
  6. パッケージに問題がある場合は、dnf reinstallコマンドに続けて、再インストールするソフトウェア・パッケージの名前を指定します。次のコマンドを実行して、nginxパッケージを再インストールします。

    dnf reinstall nginx
    

    このオプションは、dnf removeの実行、dnf installの実行と同じです。dnf reinstallを使用する場合の重要な違いは、再インストールではパッケージに関連付けられたファイルのカスタム構成が保持されます。

パッケージのアップグレードと削除

  1. インストール済パッケージで使用可能なアップグレードを表示するには、dnf check-updateと入力します。

    dnf check-update
    
  2. 単一のパッケージをアップグレードするには、dnf upgradeに続けてパッケージ名を入力します。確認プロンプトへの応答を回避するには、-yオプションを含めます。次のコマンドを実行して、binutilsパッケージをアップグレードします。

    dnf upgrade binutils -y
    

    すべてのパッケージをアップグレードするには、dnf upgradeを使用します。使用可能なすべてのアップグレードを適用するのに数分かかるため、このチュートリアルでこのコマンドを実行しないでください。

  3. オプションで、-xオプションを使用して特定のパッケージをアップグレードから除外できます。たとえば、dnf upgrade -x kernelを使用して、残りのパッケージを更新する際にカーネル・パッケージを除外します。アップグレードの完了を待機しないようにするには、この演習のプロンプトが表示されたらNと回答します。

    dnf upgrade -x kernel
    
  4. 特定のエラーまたはCVEに対応するパッケージのみをアップグレードするには、次のコマンドを実行します。アップグレードの完了を待機しないようにするには、このチュートリアルを求められたらNと回答します。

    dnf upgrade --advisory ELBA-2021-1603
    dnf upgrade --cve CVE-2021-0342
    
  5. dnf upgradeを手動で実行するかわりに、DNF自動ツールを使用することもできます。このツールは、アップグレードの自動通知、アップグレードのダウンロード、およびsystemdタイマーを使用して自動的にインストールします。次のコマンドを実行してパッケージをインストールし、タイマーを有効にします。

    dnf install dnf-automatic -y
    systemctl enable --now dnf-automatic.timer
    
  6. DNF自動ツールの構成ファイルは/etc/dnf/automatic.confです。デフォルトでは、自動アップグレードは使用可能なすべてのアップグレードを適用します。upgrade_typeパラメータをsecurityに変更して、セキュリティ・アップグレードのみを適用できます。このパラメータを表示するには、次のコマンドを入力します。

    grep upgrade_type /etc/dnf/automatic.conf
    
  7. ソフトウェア・パッケージを削除するには、dnf removeコマンドの後に削除するソフトウェア・パッケージの名前を指定して実行します。次のコマンドを実行して、nginxパッケージを削除します。

    dnf remove nginx
    

DNF履歴機能の使用

  1. DNF履歴機能には、dnfコマンドで実行されたすべてのアクションが表示されます。履歴機能を使用すると、特定のDNFトランザクションの取消し、REDOおよびロールバックを実行できます。すべてのトランザクションを表示するには、dnf historyと入力します。

    dnf history
    

    いずれかのトランザクションに関連する情報を取得するには、dnf history info <transaction id>と入力します。

  2. 例としてdnf remove nginxトランザクションを使用すると、dnf history undo <transaction id> -yと入力して削除をundoできます。次のコマンドは、dnf remove nginxがトランザクションID 34であることを前提としています。

    dnf history undo 34 -y
    
  3. dnf history redo <transaction id> -yと入力すると、削除をredoできます。次のコマンドは、dnf remove nginxがトランザクションID 34であることを前提としています。

    dnf history redo 34 -y
    
  4. DNF履歴に加えて、パッケージのインストール、更新および削除は/var/log/dnf.logファイルに記録されます。

    cat /var/log/dnf.log
    

パッケージ・グループの管理

  1. DNFではさらに、パッケージグループのインストール、更新、または削除が可能です。これらのグループは、共通の目的を提供する依存パッケージのグループです。グループ名を取得するには、dnf group listを使用します。

    dnf group list
    
  2. Server with GUIグループは、最小限のコンソールにのみインストールされるグラフィカル・デスクトップをインストールします。dnf group info "Server with GUI"と入力して、グループが他のグループで構成されていることを示します。

    dnf group info "Server with GUI"
    
  3. これらの小さいグループのいずれか(Coreなど)でdnf group infoを実行して、個々のパッケージを表示します。

    dnf group info core
    
  4. 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ヘルプ・センターを参照してください。