パッケージをアップデートする 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を学ぼう