パッケージをアップデートする dnf編

【連載コラム:Linuxを学ぼう(14)】
サーバーを扱う上で必須と言える技術が「Linux」。今回はLinuxにインストールされたパッケージの管理に使うコマンド(dnfコマンド)について解説します。

最終更新日:2023年10月05日

Linuxディストリビューションは様々なソフトウェアをパッケージ形式で管理しています。インストールされたパッケージは、必要に応じて削除したり、アップデートしたりします。ここでは、RPM形式のパッケージを管理するdnfコマンドを解説します。


アップデートを確認する

Linuxのインストールはディストリビューションが用意しているインストールメディア(ISOイメージ)から行いますが、含まれているパッケージはメディア作成時のものなので、その後アップデートされている場合があります。

インストール後、最初にアップデートされているパッケージが無いか確認する必要があります。確認するにはdnf updateコマンドを実行します。

dnfコマンドは、ディストリビューションが用意しているパッケージリポジトリと呼ばれるサーバーにアクセスし、最新のパッケージに関するリストを取得します。そしてインストールされているパッケージのバージョンと比較して、アップデート可能なパッケージの一覧を表示します。

[root@localhost ~]# dnf check-update
メタデータの期限切れの最終確認: 0:05:56 前の 2023年05月24日 01時38分15秒 に実施しました。

curl.x86_64                                7.61.1-30.el8_8.2           baseos
emacs-filesystem.noarch                    1:26.1-10.el8_8.2           baseos
firefox.x86_64                             102.11.0-2.el8_7.alma       appstream
gnome-session.x86_64                       3.28.1-20.el8_8             appstream
(以下略)

アップデートする

アップデート可能なパッケージが存在する場合、dnf updateコマンドでアップデートが行えます。引数に何も指定しなければすべてのアップデートが適用されます。パッケージ名を指定して、特定のパッケージのみアップデートすることもできます。

たとえば、以下のようにFirefoxのみアップデートしています。

[root@localhost ~]# dnf update firefox
メタデータの期限切れの最終確認: 0:09:09 前の 2023年05月24日 01時38分15秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ    Arch         バージョン                    リポジトリー    サイズ
================================================================================
アップグレード:
 firefox       x86_64       102.11.0-2.el8_7.alma         appstream       109 M

トランザクションの概要
================================================================================
アップグレード  1 パッケージ

ダウンロードサイズの合計: 109 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
firefox-102.11.0-2.el8_7.alma.x86_64.rpm        9.0 MB/s | 109 MB     00:12
--------------------------------------------------------------------------------
合計                                            8.2 MB/s | 109 MB     00:13
AlmaLinux 8 - AppStream                         1.4 MB/s | 3.4 kB     00:00

(中略)

アップグレード済み:
  firefox-102.11.0-2.el8_7.alma.x86_64

完了しました!

ソフトウェアをインストールする

ソフトウェアをインストールするにはdnf installコマンドを実行します。引数にインストールしたいパッケージ名を指定します。パッケージ管理ツールは、指定されたパッケージに必要となる追加のパッケージも自動的にインストールします。

これを「依存関係(の解消)」と呼びます。以下では、Apache Webサーバーのパッケージ httpd を指定してインストールする際に、他に8つのパッケージを依存関係のあるものとして同時にインストールしています。

[root@localhost ~]# dnf install httpd
メタデータの期限切れの最終確認: 0:10:58 前の 2023年05月24日 01時38分15秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ     Arch   バージョン                               Repo      サイズ
================================================================================
インストール:
 httpd          x86_64 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 appstream 1.4 M
依存関係のインストール:
 almalinux-logos-httpd
                noarch 84.5-1.el8                               appstream  29 k
 apr            x86_64 1.6.3-12.el8                             appstream 128 k
 apr-util       x86_64 1.6.1-6.el8_8.1                          appstream 104 k
 httpd-filesystem
                noarch 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 appstream  42 k
 httpd-tools    x86_64 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 appstream 109 k
 mod_http2      x86_64 1.15.7-8.module_el8.8.0+3554+ec1058a7.3  appstream 154 k
弱い依存関係のインストール:
 apr-util-bdb   x86_64 1.6.1-6.el8_8.1                          appstream  24 k
 apr-util-openssl
                x86_64 1.6.1-6.el8_8.1                          appstream  26 k
モジュールストリームの有効化中:
 httpd                 2.4

トランザクションの概要
================================================================================
インストール  9 パッケージ

ダウンロードサイズの合計: 2.0 M
インストール後のサイズ: 5.4 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/9): almalinux-logos-httpd-84.5-1.el8.noarch. 164 kB/s |  29 kB     00:00
(中略)
(9/9): httpd-2.4.37-56.module_el8.8.0+3560+c8e5 2.0 MB/s | 1.4 MB     00:00
--------------------------------------------------------------------------------
合計                                            1.1 MB/s | 2.0 MB     00:01

(中略)

インストール済み:
  almalinux-logos-httpd-84.5-1.el8.noarch
  apr-1.6.3-12.el8.x86_64
  apr-util-1.6.1-6.el8_8.1.x86_64
  apr-util-bdb-1.6.1-6.el8_8.1.x86_64
  apr-util-openssl-1.6.1-6.el8_8.1.x86_64
  httpd-2.4.37-56.module_el8.8.0+3560+c8e5e57e.6.x86_64
  httpd-filesystem-2.4.37-56.module_el8.8.0+3560+c8e5e57e.6.noarch
  httpd-tools-2.4.37-56.module_el8.8.0+3560+c8e5e57e.6.x86_64
  mod_http2-1.15.7-8.module_el8.8.0+3554+ec1058a7.3.x86_64

完了しました!

ソフトウェアを削除する

ソフトウェアを削除(アンインストール)するには、dnf eraseコマンドを使用します。

この際にも依存関係に基づいて、削除対象と依存関係にあるパッケージのうち、他のパッケージと依存関係にない不要となったパッケージを一緒に削除してくれます。以下のようにhttpdパッケージを削除すると、同時に8つのパッケージも削除しています。

[root@localhost ~]# dnf erase httpd
依存関係が解決しました。
================================================================================
 パッケージ    Arch   バージョン                               Repo       サイズ
================================================================================
削除中:
 httpd         x86_64 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 @appstream 4.3 M
未使用の依存関係の削除:
 almalinux-logos-httpd
               noarch 84.5-1.el8                               @appstream  11 k
 apr           x86_64 1.6.3-12.el8                             @appstream 272 k
 apr-util      x86_64 1.6.1-6.el8_8.1                          @appstream 217 k
 apr-util-bdb  x86_64 1.6.1-6.el8_8.1                          @appstream  12 k
 apr-util-openssl
               x86_64 1.6.1-6.el8_8.1                          @appstream  20 k
 httpd-filesystem
               noarch 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 @appstream 400
 httpd-tools   x86_64 2.4.37-56.module_el8.8.0+3560+c8e5e57e.6 @appstream 194 k
 mod_http2     x86_64 1.15.7-8.module_el8.8.0+3554+ec1058a7.3  @appstream 394 k

トランザクションの概要
================================================================================
削除  9 パッケージ

解放された容量: 5.4 M
これでよろしいですか? [y/N]: y
(以下略)

このように、dnfコマンドを使うことでソフトウェアのインストールなどの管理がとても楽に行えます。しっかりと使い方を確認しておきましょう。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

バックナンバー

第21回:外部からWebサーバーにアクセスする

第20回:Webサーバーを動かす

第19回:Webサーバーをインストールする

第18回:典型的なネットワークトラブルについて理解する

第17回:ネットワークの状態確認を理解する

第16回:アクセス権に関わる様々なことについて理解を深める

第15回:ファイルのアクセス権を理解する

第14回:パッケージをアップデートする dnf編

第13回:PAMを理解する

第12回:グループとは何かを理解する

第11回:sudoコマンドについて理解する

第10回:suコマンドで特権ユーザーになる

第9回:ユーザー権限を理解する

第8回:SSHによるリモートログイン

第7回:Linuxインストール後にやること

第6回:Linuxイストールの実際

第5回:Linuxインストールの準備

第4回:Linux学習のためのネットワーク環境

第3回:学習環境を用意する

第2回:Linuxをどう学ぶのか

第1回:Linuxを学ぼう

ページトップへ