Infra Engineer

RPMとYUMパッケージ管理~DNFを使用したRPMパッケージの管理~
2020.12.31
Lv1

RPMとYUMパッケージ管理~DNFを使用したRPMパッケージの管理~

今回の内容

今回は、DNFについて解説します。

覚えておきたいキーワード

・DNF
・DNFコマンド

DNF

DNF(Dandified YUM)は、CentOS8やFedora22からデフォルトで採用されているYUMの後継となるパッケージ管理ツールです。
なぜDNFが開発されたのでしょうか。
DNFが開発された背景には、YUMが「※Python 2」でしか動かないため、「Python 3」をシステムのデフォルトとするとYUMが利用できなくなってしまうということです。
そのため、YUMを「Python 2」と「Python 3」の双方に対応したものを実装した「DNF」が開発されました。
CentOS8ではシステムのデフォルトが「Python 2」から「Python 3」に変更され、これに伴いパッケージマネジャーが「YUM」から「DNF」に変更されています。

(用語解説1)Pythonについて

Pythonとは、プログラミング言語の一つで、シンプルな書き方で柔軟なコーディングができることが特徴の言語で、2008年に公開されたPythonの最新バージョンのことを「Python3」と呼びます。

また、主要なサブコマンドの多くがYUMと共通しているので、yumコマンドを使用したことがあれば、特に苦労はしません。
yumコマンドを使用した際に、「yum install 〇〇」だったものが、「dnf install 〇〇」に変わるだけです。

リポジトリのURL

リポジトリのURLは、「/etc/dnf/dnf.conf」または「/etc/yum.repos.d/*.repo」に記述されており、 通常は、リポジトリ設定に利用される「/etc/yum.repos.d/*.repo」が優先されます。
「ソースコードからインストール」する場合との違いは、ネットワーク上のパッケージを探してインストールしてくれる点や依存関係にあるパッケージも探してインストールしてくれる点です。

/etc/dnf.repos.d/CentOS-Base.repo」の内容(一部抜粋)

[root@localhost yum.repos.d]# cat CentOS-Linux-AppStream.repo
# CentOS-Linux-AppStream.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.

[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[root@localhost yum.repos.d]#

dnfコマンド

■DNFによるRPMパッケージ管理
以下の例では、yumコマンドを使って、パッケージ情報の表示、インストール、インストールしたパッケージの確認、アンインストールの例です。

例1)インストールが可能なパッケージの情報を表示する場合
#DNF info [パッケージ名]

今回は、webサーバのソフトApacheのインストールをする場合のパッケージ情報を確認しています。10行目に今回のインストールするversionは、2.4.37である事が確認できます。

[root@localhost ~]# dnf info httpd
Last metadata expiration check: 0:24:36 ago on Thu 10 Dec 2020 10:56:45 PM PST.
Available Packages
Name         : httpd
Version      : 2.4.37
Release      : 30.module_el8.3.0+561+97fdbbcc
Architecture : x86_64
Size         : 1.7 M
Source       : httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.src.rpm
Repository   : appstream
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.

[root@localhost ~]#
 

——————–

例2)パッケージをインストールする場合
#dnf install パッケージ名

以下のコマンドを使って、webサーバのソフトApacheのインストールをしています。

[root@localhost ~]# dnf install httpd
Last metadata expiration check: 0:25:52 ago on Thu 10 Dec 2020 10:56:45 PM PST.
Dependencies resolved.
===============================================================================================
 Package               Arch      Version                                    Repository    Size
===============================================================================================
Installing:
 httpd                 x86_64    2.4.37-30.module_el8.3.0+561+97fdbbcc      appstream    1.7 M
Installing dependencies:
 apr                   x86_64    1.6.3-11.el8                               appstream    125 k
 apr-util              x86_64    1.6.1-6.el8                                appstream    105 k
 centos-logos-httpd    noarch    80.5-2.el8                                 baseos        24 k
 httpd-filesystem      noarch    2.4.37-30.module_el8.3.0+561+97fdbbcc      appstream     37 k
 httpd-tools           x86_64    2.4.37-30.module_el8.3.0+561+97fdbbcc      appstream    104 k
 mod_http2             x86_64    1.15.7-2.module_el8.3.0+477+498bb568       appstream    154 k
Installing weak dependencies:
 apr-util-bdb          x86_64    1.6.1-6.el8                                appstream     25 k
 apr-util-openssl      x86_64    1.6.1-6.el8                                appstream     27 k
Enabling module streams:
 httpd                           2.4

Transaction Summary
===============================================================================================

(中略)

Installed:
  apr-1.6.3-11.el8.x86_64
  apr-util-1.6.1-6.el8.x86_64
  apr-util-bdb-1.6.1-6.el8.x86_64
  apr-util-openssl-1.6.1-6.el8.x86_64
  centos-logos-httpd-80.5-2.el8.noarch
  httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
  httpd-filesystem-2.4.37-30.module_el8.3.0+561+97fdbbcc.noarch
  httpd-tools-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
  mod_http2-1.15.7-2.module_el8.3.0+477+498bb568.x86_64

Complete!
[root@localhost ~]#

——————–

例4)インストールしたパッケージの一覧を表示する場合
#dnf list installed

以下の3行目の出力結果から、httpd.x86_64のパッケージがインストールされていることが確認できます。

[root@localhost ~]# dnf list installed httpd
Installed Packages
httpd.x86_64                  2.4.37-30.module_el8.3.0+561+97fdbbcc                  @appstream
[root@localhost ~]#

——————–

例5)パッケージをアンインストールする場合
#dnf remove パッケージ名
[root@localhost ~]# dnf remove httpd
Dependencies resolved.
===============================================================================================
 Package               Arch      Version                                   Repository     Size
===============================================================================================
Removing:
 httpd                 x86_64    2.4.37-30.module_el8.3.0+561+97fdbbcc     @appstream    4.9 M
Removing unused dependencies:
 apr                   x86_64    1.6.3-11.el8                              @appstream    260 k
 apr-util              x86_64    1.6.1-6.el8                               @appstream    231 k
 apr-util-bdb          x86_64    1.6.1-6.el8                               @appstream     12 k
 apr-util-openssl      x86_64    1.6.1-6.el8                               @appstream     20 k
 centos-logos-httpd    noarch    80.5-2.el8                                @baseos       1.9 k
 httpd-filesystem      noarch    2.4.37-30.module_el8.3.0+561+97fdbbcc     @appstream    400
 httpd-tools           x86_64    2.4.37-30.module_el8.3.0+561+97fdbbcc     @appstream    195 k
 mod_http2             x86_64    1.15.7-2.module_el8.3.0+477+498bb568      @appstream    393 k

Transaction Summary
===============================================================================================

(中略)

Removed:
  apr-1.6.3-11.el8.x86_64
  apr-util-1.6.1-6.el8.x86_64
  apr-util-bdb-1.6.1-6.el8.x86_64
  apr-util-openssl-1.6.1-6.el8.x86_64
  centos-logos-httpd-80.5-2.el8.noarch
  httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
  httpd-filesystem-2.4.37-30.module_el8.3.0+561+97fdbbcc.noarch
  httpd-tools-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
  mod_http2-1.15.7-2.module_el8.3.0+477+498bb568.x86_64

Complete!
[root@localhost ~]#

サブコマンド

DNFコマンドの主なサブコマンドは、以下のようになります。

サブコマンド 説明
check-update アップデート可能なパッケージがあるかどうかを確認。
update upgradeコマンドのエイリアス。
clean キャッシュ用ファイルのクリーンアップ。
install パッケージ名 指定したパッケージをアップデート。
update パッケージ名 指定したパッケージをアップデート。
remove パッケージ名 指定したパッケージをアンインストール。
list 利用可能な全てのパッケージを一覧表示。
list パッケージ名 指定したパッケージのバージョンとインストールの状況を表示。
groupinstall グループ 指定したパッケージグループをインストール。
grouplist パッケージグループのリストを表示。
groupinfo グループ 指定したパッケージグループに含まれるパッケージの情報を表示
search キーワード パッケージ情報をキーワードで検索。

まとめ

YUMコマンドを一度でも使用したことのある人なら、DNFコマンドもすぐに慣れるかと思います。CentOS8では、「YUM」から「DNF」に変更されていることをしっかり覚えておきましょう。
それでは今回はこのあたりで。

Linux資格 「LPIC Lv1」徹底解説 連載目次リンク

Linux資格 「LPIC Lv1」徹底解説 連載目次

連載執筆講師が講座開講中!ITスクール SAK

ITスクールSAK | LPIC Lv1合格保証コース 講座紹介ページ