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」に変更されています。
また、主要なサブコマンドの多くが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コマンドを使って、パッケージ情報の表示、インストール、インストールしたパッケージの確認、アンインストールの例です。
今回は、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 ~]#
——————–
以下のコマンドを使って、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 ~]#
——————–
以下の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 ~]#
——————–
[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」に変更されていることをしっかり覚えておきましょう。
それでは今回はこのあたりで。