Linux dnf/yum パッケージマネージャー/パッケージ管理システム

パッケージ

パッケージとは、ソフトウェアの実行に必要なファイルをまとめたものです。
具体的には、以下のようなものが含まれます。
・実行ファイル
ライブラリ
・リソース (画像・音楽ファイルなど)
・設定ファイル

https://xtech.nikkei.com/it/article/Keyword/20110427/359976/
リポジトリリポジトリとは、パッケージの保管場所 (配布サイト) のことです。

「iOS でいう App Store」とか、「Windows でいう窓の社・Vector」みたいなものです。

パッケージマネージャー(パッケージ管理システム)

パッケージマネージャーとは、パッケージをインストール/アンインストールするツールです

パッケージマネージャーは依存関係を解決 (インストール) する機能もあります

依存関係依存関係とは、パッケージを利用するために、他のパッケージが必要な状態です。
sudo dnf install <パッケージ名>
関連記事:Linux の基本機能
学習ロードマップ
スポンサーリンク

パッケージマネージャーの種類一覧

パッケージマネージャーには、以下の種類が存在します。

パッケージマネージャーディストリビューション下位のパッケージマネージャー
dnf (yum)RHELrpm
aptUbuntu/Debiandpkg
下位のパッケージマネージャーは、依存関係を手動で解決する必要があります。(必要な依存関係は確認できます)
上位のパッケージマネージャー (dnf, apt) は、依存関係を自動で解決してくれます。

dnf と yum の違い

使用上の違いはありません。(どちらで書いても OK です。)

yum の代わりに dnf と入力しても、どちらも互換性のためのエイリアスなので、コマンドは期待通りに動作します。

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.4_release_notes/package_management_with_yum_dnf

内部や運用上の違いは以下のとおりです。(参考)

  • メモリ消費の低減
  • ドキュメントの整備
  • (廃止されている) Python 2 依存からの脱却

ということで、dnf を推奨します。

スポンサーリンク

dnf/yum コマンドの使い方

ここからは dnf コマンドを紹介します。(dnf を yum に置き換えても動作します)

install パッケージをインストール

今回は nginx (Web サーバー) パッケージをインストールしてみます。

sudo dnf install nginx
====================================================================================================================================================================
 Package                                    Architecture                  Version                                          Repository                          Size
====================================================================================================================================================================
Installing:
 nginx                                      x86_64                        1:1.24.0-1.amzn2023.0.4                          amazonlinux                         33 k
Installing dependencies:
 generic-logos-httpd                        noarch                        18.0.0-12.amzn2023.0.3                           amazonlinux                         19 k
 gperftools-libs                            x86_64                        2.9.1-1.amzn2023.0.3                             amazonlinux                        308 k
 libunwind                                  x86_64                        1.4.0-5.amzn2023.0.2                             amazonlinux                         66 k
 nginx-core                                 x86_64                        1:1.24.0-1.amzn2023.0.4                          amazonlinux                        586 k
 nginx-filesystem                           noarch                        1:1.24.0-1.amzn2023.0.4                          amazonlinux                        9.8 k
 nginx-mimetypes                            noarch                        2.1.49-3.amzn2023.0.3                            amazonlinux                         21 k

Transaction Summary
====================================================================================================================================================================
Install  7 Packages

Total download size: 1.0 M
Installed size: 3.4 M
Is this ok [y/N]: y

「y」を押して「Enter」を押すとパッケージをインストールします。

なお、nginx パッケージ以外にも、依存するパッケージをインストールすることが確認できます。

upgrade パッケージをアップデート

sudo dnf upgrade nginx

なお、dnf upgrade と dnf update は同じです。
yum upgrade は yum --obsoletes update と同じです。(不要になったパッケージを自動削除)

Invoking dnf update or dnf upgrade, in all their forms, has the same effect in DNF, with the latter being preferred. In YUM yum upgrade was exactly like yum --obsoletes update.

https://dnf.readthedocs.io/en/latest/cli_vs_yum.html#update-and-upgrade-commands-are-the-same

info パッケージの詳細情報

dnf info nginx
Installed Packages
Name         : nginx
Epoch        : 1
Version      : 1.24.0
Release      : 1.amzn2023.0.4
Architecture : x86_64
Size         : 128 k
Source       : nginx-1.24.0-1.amzn2023.0.4.src.rpm
Repository   : @System
From repo    : amazonlinux
Summary      : A high performance web server and reverse proxy server
URL          : https://nginx.org
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
             : IMAP protocols, with a strong focus on high concurrency, performance and low
             : memory usage.
  • 「Installed Packages」と表示されるとインストール済み
  • 「Available Packages」と表示されると、まだインストールしてない

list パッケージの一覧を表示

dnf list
Installed Packages
acl.x86_64 2.3.1-2.amzn2023.0.2 @System    

Available Packages
npm.x86_64 1:8.19.2-1.18.12.1.1.amzn2023.0.10 amazonlinux

リポジトリ名の前に @ マークが付いているものは、インストール済みです。

  • インストール済みパッケージに絞りたい場合は dnf list installed
  • 未インストールパッケージに絞りたい場合は、dnf list available

特定のパッケージがインストール済みか調べたい場合は、dnf info <パッケージ> がオススメです。

remove パッケージを削除

sudo dnf remove nginx
====================================================================================================================================================================
 Package                                    Architecture                  Version                                         Repository                           Size
====================================================================================================================================================================
Removing:
 nginx                                      x86_64                        1:1.24.0-1.amzn2023.0.4                         @amazonlinux                        128 k
Removing unused dependencies:
 generic-logos-httpd                        noarch                        18.0.0-12.amzn2023.0.3                          @amazonlinux                         21 k
 gperftools-libs                            x86_64                        2.9.1-1.amzn2023.0.3                            @amazonlinux                        1.4 M
 libunwind                                  x86_64                        1.4.0-5.amzn2023.0.2                            @amazonlinux                        165 k
 nginx-core                                 x86_64                        1:1.24.0-1.amzn2023.0.4                         @amazonlinux                        1.6 M
 nginx-filesystem                           noarch                        1:1.24.0-1.amzn2023.0.4                         @amazonlinux                          0  
 nginx-mimetypes                            noarch                        2.1.49-3.amzn2023.0.3                           @amazonlinux                         43 k

Transaction Summary
====================================================================================================================================================================
Remove  7 Packages

Freed space: 3.4 M
Is this ok [y/N]:y

「y」を入力し、Enter を押すとパッケージがアンインストールされます。

スポンサーリンク

dnf/yum のリポジトリの管理/確認

パッケージマネージャーでは、パッケージを探すリポジトリを追加可能です。

repolist 現在のリポジトリ一覧

dnf repolist
repo id                     repo name
amazonlinux                 Amazon Linux 2023 repository
kernel-livepatch            Amazon Linux 2023 Kernel Livepatch repository

現在無効になっているリポジトリも一覧に含める場合は all をつけます。

dnf repolist all
repo id                  repo name                                       status
amazonlinux              Amazon Linux 2023 repository                    enabled
amazonlinux-debuginfo    Amazon Linux 2023 repository - Debug            disabled
amazonlinux-source       Amazon Linux 2023 repository - Source packages  disabled
kernel-livepatch         Amazon Linux 2023 Kernel Livepatch repository   enabled

config-manager --add-repo 新規リポジトリを追加

今回は Fedora 40 リポジトリの URL を指定して追加してみます。(詳細はこちら)

sudo dnf config-manager --add-repo http://ftp.iij.ad.jp/pub/linux/Fedora/fedora/linux/releases/40/Everything/x86_64/os/

※リポジトリの追加は自己責任です。

/etc/yum.repos.d/ リポジトリの設定ファイル

先程追加した Fedora 40 のリポジトリの設定ファイルを確認します。

ls /etc/yum.repos.d/
amazonlinux.repo 
ftp.iij.ad.jp_pub_linux_Fedora_fedora_linux_releases_40_Everything_x86_64_os_.repo
kernel-livepatch.repo

config-manager --enable リポジトリを有効化

Fedora 40 のリポジトリ名を指定して有効化します。
※Fedora 40 はデフォルトで有効化されてますが、今回は説明用として有効化

sudo dnf config-manager --enable ftp.iij.ad.jp_pub_linux_Fedora_fedora_linux_releases_40_Everything_x86_64_os_
dnf repolist all
repo id                  repo name                                       status
amazonlinux              Amazon Linux 2023 repository                    enabled
amazonlinux-debuginfo    Amazon Linux 2023 repository - Debug            disabled
amazonlinux-source       Amazon Linux 2023 repository - Source packages  disabled
ftp.iij.ad.jp_pub_linux_Fedora_fedora_linux_releases_40_Everything_x86_64_os_ created by dnf config-manager from http://ftp.iij.ad.jp/pub/linux/Fedora/fedo enabled
kernel-livepatch         Amazon Linux 2023 Kernel Livepatch repository   enabled

関連情報

学習ロードマップ
関連記事:Linux の基本機能
Linux カーネルの機能
ネットワークのコマンド
関連記事:サーバー

参考資料

第9章 Yum Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.