dnfコマンドについて
CentOS8 ではサーバーサービスやライブラリなどのパッケージを管理するために dnf と呼ばれるコマンドを主に利用します。
dfnコマンドはRed Hat系のLinuxディストリビューションで使われている『RPMパッケージ』と呼ばれるパッケージファイルを扱うコマンドで、install、update、removeのオプションを指定して実行することで、パッケージのインストールや削除等を行うことができます。
該当パッケージと依存関係にある必要なパッケージはコマンド実行時に自動で識別され、インストールする際に同時に追加されるため、非常に少ないオペレーションでパッケージのインストールや削除が可能な便利なコマンドなのです。
DL可能なパッケージが管理されているデータベースをリポジトリと呼びます。
リポジトリはデフォルトで設定されている場所の他、任意で追加することで、インストールすることができるパッケージを増やすことが可能です。
- CentOS Linux release 8.2.2004 (Core)
dnf コマンドの使い方
▼パッケージのリストより検索
list オプションのズラズラと表示される結果を「|(パイプ)」で送って、bind-utils のパッケージ名の行のみを表示しています。
1 2 3 |
# dnf list | grep bind-utils bind-utils.x86_64 |
▼パッケージの詳細
下記の例では bind-utils と呼ばれるパッケージの詳細を表示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# dnf info bind-utils メタデータの期限切れの最終確認: 2:19:25 時間前の 2020年09月30日 10時05分59秒 に実施しました。 利用可能なパッケージ 名前 : bind-utils エポック : 32 バージョン : 9.11.13 リリース : 6.el8_2.1 Arch : x86_64 サイズ : 443 k ソース : bind-9.11.13-6.el8_2.1.src.rpm リポジトリー : AppStream 概要 : Utilities for querying DNS name servers URL : http://www.isc.org/products/BIND/ ライセンス : MPLv2.0 : : |
▼指定したパッケージと関連パッケージをインストール
「-y」指定で「これでよろしいですか? [y/N]: n?」など全ての質問にYesとします。
1 |
# dnf install -y bind-utils |
▼指定したパッケージと関連パッケージを削除
1 |
# dnf remove bind-utils |
▼パッケージの追加削除履歴
1 |
# dnf history |
▼インストールされたパッケージの確認
下記の例ではインストールされた一覧より、 httpd パッケージの検索結果のみを表示しています。
1 2 3 4 5 6 7 8 |
# dnf list installed | grep httpd centos-logos-httpd.noarch 80.5-2.el8 @BaseOS httpd.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-devel.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-filesystem.noarch 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-manual.noarch 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream httpd-tools.x86_64 2.4.37-21.module_el8.2.0+494+1df74eae @AppStream |
dnfコマンドのオプション
▼オプション一覧
-y –assumeyes |
全ての問い合わせに対して「yes」を選択したと見なして実行する。 |
–assumeno | 全ての問い合わせに対して「no」を選択したと見なして実行する。 |
-C –cacheonly |
パッケージの情報を全くダウンロードせずに、キャッシュだけを使用する。 |
–refresh | コマンド実行前にパッケージ情報のキャッシュを強制的に更新する。 |
-R 分 –randomwait=分 |
最大待ち時間(分)を指定する。 |
-c 構成ファイル名 –config=構成ファイル名 |
構成ファイルを指定する。 |
–enablerepo | リポジトリID 指定したリポジトリを有効にする。 |
–disablerepo | リポジトリID 指定したリポジトリを無効にする。 |
–repo リポジトリID | 指定したリポジトリ内のみ有効にする。 複数ある場合は「–repo」を複数回使用する。 |
–repoid リポジトリID | –repoと同様のコマンド。 |
–nodocs | ドキュメントをインストールしない。 |
–allowerasing | 依存関係を解決するためにインストール済みパッケージの削除を許可する。 |
–installroot=場所 | インストール先を指定する。 |
–downloaddir=場所 | ダウンロード先を指定する。 |
–downloadonly | ファイルのダウンロードだけを行う。 |
-x パッケージ名 –exclude=パッケージ名 | 除外するパッケージを指定する。 |
–showduplicates | 「info」「search」のオプション結果で重複しているものも表示する。 |
–color=指定 | 出力メッセージを色付きにするかどうかを「always」「auto」「never」のいずれかで指定する。 |
-q –quiet | 実行時にメッセージを出力しない。 |
-v –verbose | 詳しいメッセージを出力する。 |
▼パッケージ操作
install | 指定したパッケージに加え、依存関係があるパッケージもインストールする。 |
reinstall | パッケージを再インストールする。 |
downgrade | パッケージを以前のバージョンのものにダウングレードする。 |
remove | パッケージを依存関係のあるパッケージとともに削除する。 |
autoremove | 依存関係のためにインストールされていた不要なパッケージを削除する。 |
upgrade | パッケージを更新する。 |
upgrade-minimal | 不具合の修正や機能追加、セキュリティ対応など「重要な更新」だけを更新する。 |
distro-sync | 最新の利用可能なバージョンへインストール済みパッケージを同期する。 |
mark install | 指定パッケージをソースから個別でインストールした時と同様の状態でインストールする。 「dnf mark remove パッケージ名」で個別で削除する。 |
▼パッケージ情報確認コマンド
info | パッケージの情報を表示する。 |
list | パッケージを一覧表示する。 |
deplist | パッケージの依存性の一覧を表示する。 |
group | パッケージグループのサマリーを表示する。 |
search | 指定した文字列でパッケージの詳細を検索する。 |
repoquery | キーワードに一致するパッケージを検索する。 |
provides | ファイル名などを指定して、該当するファイルを提供するパッケージを検索する。 |
repolist | ソフトウェアリポジトリの構成を表示する。 |
▼メンテナンス、その他コマンド
makecache | リポジトリの内容をDLして、キャッシュを作成・更新する。 |
check | ローカルのパッケージデータベースに問題がないかどうか確認する。 |
check-update | 更新に利用できるパッケージを確認する。 |
clean | キャッシュデータを削除する。 |
shell | 対話型のシェル(DNFシェル)を実行する。 |
updateinfo | リポジトリの更新情報を表示する。 |
history | パッケージのインストールや削除の履歴を表示する。 |
EPELリポジトリを追加
DL可能なパッケージが管理されているデータベースをリポジトリと呼びます。
リポジトリはデフォルトで設定されている場所の他、任意で追加することで、インストールすることができるパッケージを増やすことが可能です。
下記の例では EPEL リポジトリを追加する手順です。
▼EPELとは
EPEL:Extra Packages for Enterprise Linuxの略で、エンタープライズLinux用のスペシャルパッケージが提供されている。
▼CentOSリポジトリ一覧
▼EPELのインストール
1 |
# dnf -y install epel-release |
▼設定ファイルでEPELを利用可能に設定
1 2 3 4 5 6 7 8 9 |
# vi /etc/yum.repos.d/epel.repo epel.repo [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir |
▼#1=有効、0=無効
enabled=1
▼優先度を追記。[1-99]で指定
1は最優先でデフォルトは99
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
▼リポジトリ一覧の有効/無効確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# dnf repolist all repo id repo の名前 状態 AppStream CentOS-8 - AppStream 有効化 AppStream-source CentOS-8 - AppStream Sources 無効化 BaseOS CentOS-8 - Base 有効化 BaseOS-source CentOS-8 - BaseOS Sources 無効化 Devel CentOS-8 - Devel WARNING! FOR BUILDROOT USE ONLY! 無効化 HighAvailability CentOS-8 - HA 無効化 PowerTools CentOS-8 - PowerTools 有効化 base-debuginfo CentOS-8 - Debuginfo 無効化 c8-media-AppStream CentOS-AppStream-8 - Media 無効化 c8-media-BaseOS CentOS-BaseOS-8 - Media 無効化 centosplus CentOS-8 - Plus 無効化 centosplus-source CentOS-8 - Plus Sources 無効化 cr CentOS-8 - cr 無効化 elrepo ELRepo.org Community Enterprise Linux Repository - el8 有効化 elrepo-extras ELRepo.org Community Enterprise Linux Extras Repository - el8 無効化 elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository - el8 無効化 elrepo-testing ELRepo.org Community Enterprise Linux Testing Repository - el8 無効化 epel Extra Packages for Enterprise Linux 8 - x86_64 有効化 epel-debuginfo Extra Packages for Enterprise Linux 8 - x86_64 - Debug 無効化 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 有効化 epel-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - x86_64 - Debug 無効化 epel-modular-source Extra Packages for Enterprise Linux Modular 8 - x86_64 - Source 無効化 epel-playground Extra Packages for Enterprise Linux 8 - Playground - x86_64 無効化 epel-playground-debuginfo Extra Packages for Enterprise Linux 8 - Playground - x86_64 - Debug 無効化 epel-playground-source Extra Packages for Enterprise Linux 8 - Playground - x86_64 - Source 無効化 epel-source Extra Packages for Enterprise Linux 8 - x86_64 - Source 無効化 epel-testing Extra Packages for Enterprise Linux 8 - Testing - x86_64 無効化 epel-testing-debuginfo Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Debug 無効化 epel-testing-modular Extra Packages for Enterprise Linux Modular 8 - Testing - x86_64 無効化 epel-testing-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - Testing - x86_64 - Debug 無効化 epel-testing-modular-source Extra Packages for Enterprise Linux Modular 8 - Testing - x86_64 - Source 無効化 epel-testing-source Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Source 無効化 extras CentOS-8 - Extras 有効化 extras-source CentOS-8 - Extras Sources 無効化 fasttrack CentOS-8 - fasttrack 無効化 remi Remi's RPM repository for Enterprise Linux 8 - x86_64 無効化 remi-debuginfo Remi's RPM repository for Enterprise Linux 8 - x86_64 - debuginfo 無効化 remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64 有効化 remi-modular-test Remi's Modular testing repository for Enterprise Linux 8 - x86_64 無効化 remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 有効化 remi-safe-debuginfo Remi's RPM repository for Enterprise Linux 8 - x86_64 - debuginfo 無効化 remi-test Remi's test RPM repository for Enterprise Linux 8 - x86_64 無効化 remi-test-debuginfo Remi's test RPM repository for Enterprise Linux 8 - x86_64 - debuginfo 無効化 |
▼有効リポジトリ内のパッケージ数の確認
1 2 3 |
# dnf list available | wc -l 15600 |
▼「enabled=0」で無効の場合に一時的に有効化してパッケージをインストール
1 |
# dnf --enablerepo=elrepo install パッケージ名 |
▼EPELのリスト確認
1 |
# dnf list --enablerepo=epel |