ホーム テクノロジー LINUX DNF パッケージ マネージャーのクイック ガイド

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 アップグレードと dnf アップデートはどちらも同じ効果がありますが、dnf アップグレードの方が優先されます。

単一パッケージの更新

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

 $ sudo dnf upgrade package_name

たとえば、Python パッケージを更新するには:

 $ sudo dnf upgrade python

結論

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

「 DNF パッケージ マネージャーのクイック ガイド」についてわかりやすく解説!絶対に観るべきベスト2動画

yum and dnf package manager in linux شرح
yumコマンド、dnfコマンドとは

Share via
Copy link