パッケージをアップデートする dnf編
【連載コラム:Linuxを学ぼう(14)】
サーバーを扱う上で必須と言える技術が「Linux」。今回はLinuxにインストールされたパッケージの管理に使うコマンド(dnfコマンド)について解説します。
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サーバーをインストールする
第17回:ネットワークの状態確認を理解する
第15回:ファイルのアクセス権を理解する
第14回:パッケージをアップデートする dnf編
第13回:PAMを理解する
第12回:グループとは何かを理解する
第11回:sudoコマンドについて理解する
第10回:suコマンドで特権ユーザーになる
第9回:ユーザー権限を理解する
第8回:SSHによるリモートログイン
第6回:Linuxイストールの実際
第5回:Linuxインストールの準備
第3回:学習環境を用意する
第2回:Linuxをどう学ぶのか
第1回:Linuxを学ぼう