DNF パッケージ マネージャーのクイック ガイド

公開: 2020-06-06

DNF は現在、ほとんどの RPM ベースの Linux ディストリビューションでデフォルトのパッケージ管理システムです。

DNF はリポジトリからパッケージをダウンロードし、パッケージをインストール、アンインストール、および更新します。 インストール、更新、または削除するパッケージの依存関係の自動解決を実行し、依存関係の要件を満たすために必要なすべてのパッケージをインストールします。

Fedora では、Fedora 22 以降のデフォルトのパッケージ マネージャーです。RHEL 8.x では、デフォルトのパッケージ マネージャーになりました。

DNF は、GPG 署名付きパッケージで GPG 署名検証を有効にすることで、安全なパッケージ管理を提供します。 DNF は、そのリポジトリの正しいキーで署名されていないパッケージをインストールしません。

下位互換性のために、RHEL 8.x には YUM コマンドもありますが、これは DNF へのリンクです。

なぜDNF?

DNF または Dandified YUM は、次世代の YUM です。 YUM と比較して、DNF はメモリ使用率が高く、依存関係管理が改善されており、Python 2 と Python 3 の両方を使用して実行できます。

DNF によるパッケージ管理

DNF コマンドを使用してパッケージをインストール、更新、または削除するには、スーパーユーザー権限が必要です。 以下は、システム管理者が頻繁に使用する一連の DNF コマンドです。

パッケージの検索

すべてのリポジトリでインストール済みまたは利用可能なパッケージを検索するには、次を使用します。

 $ sudo dnf search <em>package_name</em>

たとえば、パッケージ Nmap を検索するには:

 $ sudo dnf search nmap
 Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement

パッケージの一覧表示

インストール済みで使用可能なすべてのパッケージのリストを表示するには:

 $ sudo dnf list all
 Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...

インストールされているすべてのパッケージを一覧表示するには:

$ sudo dnf list installed

 Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...

利用可能なすべてのパッケージを一覧表示するには:

 $ sudo dnf list available
 Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...

たとえば、利用可能なすべての MySQL パッケージを一覧表示するには、次のようにします。

 $ sudo dnf list available "mysql*"
 Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms

パッケージ情報の表示

パッケージに関する情報を表示するには:

 $ sudo dnf info <em>package_name </em>

たとえば、httpd サーバーに関する情報を表示するには、次のようにします。

 $ sudo dnf info httpd
 Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.

パッケージのインストール

単一パッケージのインストール

単一のパッケージと、インストールされていないすべての依存関係をインストールするには:

 $ sudo dnf install package_name

たとえば、 Nginx をインストールするには:

 $ sudo dnf install nginx
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..

これにより、Nginx と、インストールされていないすべての依存関係の要件がインストールされます。

複数のパッケージのインストール

このコマンドにパッケージ名を追加して、複数のパッケージをインストールすることもできます。 たとえば、Nginx、PHP、および MySQL サーバーをインストールするには、次のように入力します。

 $ sudo dnf install nginx php mysql-server
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...

バイナリ ファイル名によるパッケージのインストール

インストールするバイナリ ファイルの名前がわかっているが、パッケージ名がわからない場合でも、関連するパッケージをインストールするにはそれで十分です。

たとえば、次のように入力します。

 $ sudo dnf install /usr/sbin/named
 Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:

DNF は/usr/sbin/という名前のパッケージを検索して見つけ、それをインストールするようにプロンプ​​トを出します。

ファイルを所有するパッケージを見つける

ファイル名を知っていて、それを提供するパッケージ (インストールされているかどうか) を見つけたい場合は、次を使用します。

 $ sudo dnf provides <em>file_name</em>

たとえば、名前付きのパッケージ プロバイダーを見つけるには、DNS サーバーのバイナリを次のように使用します。

 $ sudo dnf provides named
 Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named

パッケージの削除

パッケージを削除するには:

 sudo dnf remove <em>package_name</em>

ただし、注意してください。DNF は、パッケージに依存するパッケージを削除せずにパッケージを削除することはできません。 パッケージ nmap を削除するには:

 $ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:

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

パッケージ グループは、密接に関連し、共通の目的を果たすパッケージの集まりです。 パッケージ グループをインストールすると、一連のパッケージがインストールされるため、時間を大幅に節約できます。

すべてのパッケージ グループを一覧表示する

すべてのパッケージ グループを一覧表示するには:

 $ sudo dnf group list
 Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support

グループ内のすべてのパッケージを一覧表示する

グループ内のすべてのパッケージを一覧表示するには:

 $ sudo dnf group info <em>package_name</em>

たとえば、セキュリティ ツール グループのパッケージを表示するには、次のようにします。

 $ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers

パッケージ グループのインストール

グループをインストールすると、グループ内のすべてのパッケージがインストールされます。 パッケージ グループをインストールするには、次を使用します。

 sudo dnf group install <em>package_group_name</em>

たとえば、「Network Servers」グループをインストールするには、次のようにします。

 $ sudo dnf group install “Network Servers”
 Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:

パッケージ グループの削除

パッケージ グループを削除するには:

 sudo dnf remove <em>package_name</em>

したがって、「セキュリティ ツール」パッケージ グループを削除するには、次のようにします。

 $ sudo dnf group remove "security tools"
 Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]: 

パッケージの更新

すべてのパッケージを更新しています

すべてのパッケージとその依存関係を更新するには、次を使用できます。

 $ sudo dnf upgrade
 Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!

これにより、インストール可能なすべての更新がインストールされます。 dnf upgradeと dnf update はどちらも同じ効果がありますが、dnf upgrade の方が優先されます。

単一のパッケージの更新

単一のパッケージを更新するには、次を実行します。

 $ sudo dnf upgrade package_name

たとえば、python パッケージを更新するには、次のようにします。

 $ sudo dnf upgrade python

結論

DNF を学習することは、多くの場合、システム管理タスクを実行する最速の方法であるため、やりがいがあります。 RHEL 8 の学習に興味がある場合は、この Udemy コースをチェックしてください。