パッケージマネージャ(package manager)概観 - apt / dnf / pacman / zypper の地図

パッケージマネージャ(package manager)概観 - apt / dnf / pacman / zypper の地図

パッケージマネージャとは何か?

結論: パッケージマネージャは、ソフトウェアの導入・更新・削除・依存解決を一手に引き受けるツール。ディストリビューションごとに apt / dnf / pacman / zypper と名前は違うが、やることは同じ。

Linux でソフトウェアを入れるとき、Windows のように個別のインストーラを探して回る必要はない。パッケージマネージャが中央のリポジトリから目的のパッケージを取得し、依存関係(必要な別のライブラリ)を自動で解決して導入する。

この記事の狙いは、4 大パッケージマネージャを 1 枚の地図 にまとめること。コマンド名は違っても「更新インデックスの取得 → インストール → 検索 → 削除」という操作の型は共通である。型さえ掴めば、未経験のディストリでも迷わない。

この記事の対象

  • 複数ディストリを触る / 触る予定がある中級者
  • apt は使えるが dnfpacman で手が止まる人
  • Dockerfile やサーバ移行でディストリ差分に直面した人

なぜディストリビューションごとに違うのか?

結論: パッケージ形式(.deb / .rpm 等)と、それを管理する設計思想がディストリ系統ごとに異なるため。系統は大きく Debian 系・Red Hat 系・Arch 系・SUSE 系の 4 つに分かれる。

歴史的に各ディストリは独自にパッケージ管理を発展させた。結果、パッケージ形式ツールが系統ごとに分かれている。

系統 代表ディストリ 形式 高レベルツール 低レベルツール
Debian 系 Debian / Ubuntu .deb apt dpkg
Red Hat 系 Fedora / RHEL / Rocky .rpm dnf rpm
Arch 系 Arch / Manjaro .pkg.tar.zst pacman pacman
SUSE 系 openSUSE / SLE .rpm zypper rpm

「高レベルツール」はリポジトリ取得・依存解決を担い、「低レベルツール」は単一パッケージファイルの展開・登録を担う。普段触るのは高レベル側だが、関係は後述する。

apt(Debian / Ubuntu 系)の地図

結論: apt は最も普及した高レベルツール。sudo apt update でインデックスを更新してから sudo apt install <パッケージ> で導入するのが基本の型。

Debian と Ubuntu、およびその派生で使う。apt は旧来の apt-get / apt-cache を統合した対話向けフロントエンド。

# インデックス(パッケージ一覧)を更新
$ sudo apt update

# インストール済みパッケージを一括更新
$ sudo apt upgrade

# パッケージを導入
$ sudo apt install nginx

# 削除(設定ファイルは残す)
$ sudo apt remove nginx

# 設定ファイルごと削除
$ sudo apt purge nginx

# 検索 / 情報表示
$ apt search keyword
$ apt show nginx

apt update(インデックス更新)と apt upgrade(パッケージ更新)は別物update だけでは実体は新しくならない。新規インストール前は update を先に走らせる。

dnf(Fedora / RHEL 系)の地図

結論: dnf は Red Hat 系の標準ツールで、かつての yum の後継。apt と違い、メタデータ更新は各コマンド実行時に自動で行われる。

Fedora、RHEL 8 以降、Rocky Linux、AlmaLinux などで使う。yum コマンドは現在 dnf へのエイリアスとして残っていることが多い。

# システム全体を更新(メタデータ取得は自動)
$ sudo dnf upgrade

# 更新可能なパッケージの確認のみ
$ dnf check-update

# パッケージを導入
$ sudo dnf install nginx

# 削除
$ sudo dnf remove nginx

# 検索 / 情報表示
$ dnf search keyword
$ dnf info nginx

apt のような明示的なインデックス更新コマンドは不要。dnf install / dnf upgrade の実行時に、期限切れのメタデータが自動でリフレッシュされる。

pacman(Arch 系)の地図

結論: pacman は短いオプション文字の組み合わせで操作する。-S(同期=導入)、-R(削除)、-Q(問い合わせ)、-y(DB 更新)、-u(アップグレード)が基本要素。

Arch Linux と Manjaro などで使う。慣れると最速だが、オプションが記号的で最初は戸惑いやすい。

# パッケージ DB を同期してシステムを全更新(最頻出)
$ sudo pacman -Syu

# パッケージを導入
$ sudo pacman -S nginx

# 削除(不要になった依存も一緒に消す)
$ sudo pacman -Rs nginx

# 検索(リモート) / 情報表示(リモート)
$ pacman -Ss keyword
$ pacman -Si nginx

# インストール済み一覧
$ pacman -Q

Arch はローリングリリース。部分更新(partial upgrade)は非推奨で、個別パッケージだけ入れる前にも pacman -Syu で全体を同期するのが作法。整合性が崩れるとシステムが壊れやすい。

zypper(openSUSE 系)の地図

結論: zypper は openSUSE / SLE の標準ツール。refresh(インデックス更新)→ install / update という流れは apt に近い。各サブコマンドに短縮形がある。

openSUSE Leap / Tumbleweed と SUSE Linux Enterprise で使う。.rpm 形式だが、ツールは dnf とは別系統。

# リポジトリのインデックスを更新
$ sudo zypper refresh

# インストール済みを更新
$ sudo zypper update

# パッケージを導入(短縮形: in)
$ sudo zypper install nginx

# 削除(短縮形: rm)
$ sudo zypper remove nginx

# 検索(短縮形: se) / 情報表示
$ zypper search keyword
$ zypper info nginx

ローリングリリースの Tumbleweed では通常の update ではなく sudo zypper dup(distribution upgrade)で全体を上げるのが推奨される。Leap(固定リリース)では update でよい。

4 つのコマンド対応表

結論: 操作の型(更新・導入・削除・検索)で横に並べれば、未知のディストリでも対応表を引くだけで作業できる。これがこの記事の中心となる地図。

やりたいこと apt dnf pacman zypper
インデックス更新 apt update (自動) pacman -Sy zypper refresh
システム全体を更新 apt upgrade dnf upgrade pacman -Syu zypper update
パッケージを導入 apt install <pkg> dnf install <pkg> pacman -S <pkg> zypper install <pkg>
パッケージを削除 apt remove <pkg> dnf remove <pkg> pacman -R <pkg> zypper remove <pkg>
検索 apt search <word> dnf search <word> pacman -Ss <word> zypper search <word>
情報表示 apt show <pkg> dnf info <pkg> pacman -Si <pkg> zypper info <pkg>
インストール済み一覧 apt list --installed dnf list --installed pacman -Q zypper search -i

覚え方: 「更新 → 導入 → 削除 → 検索」の 4 動作を縦軸に、ディストリを横軸に取る。新しい環境に入ったら、この表の縦 1 列を確認するだけでよい。

低レベルツール(dpkg / rpm)との関係は?

結論: dpkg / rpm は単一パッケージファイルを直接操作する低レベルツール。依存解決をしないため、依存を自動で揃えたいなら高レベルツール(apt / dnf 等)を使う。

ダウンロード済みの .deb / .rpm を直接入れたいときに低レベルツールを使う。

# .deb を直接インストール(依存は解決しない)
$ sudo dpkg -i package.deb

# .rpm を直接インストール(依存は解決しない)
$ sudo rpm -i package.rpm

低レベルツールは依存を解決しないため、dpkg -i 後に「依存が足りない」状態になることがある。その場合は sudo apt install -f で依存を補修する。基本は高レベルツール経由が安全。

どう使い分け・移行するか?

結論: 使うディストリで決まるので「選ぶ」ものではない。移行時は対応表でコマンドを読み替え、ローリング系(Arch / Tumbleweed)は部分更新を避ける点だけ追加で意識する。

実務での判断ポイントを整理する。

  • サーバ運用: Ubuntu(apt)と RHEL 系(dnf)が二大勢力。Dockerfile を書くなら両方の install 構文を押さえておく
  • デスクトップ / 最新志向: Arch(pacman)や Fedora(dnf)。pacman -Syu の作法に慣れる
  • エンタープライズ: SUSE 系(zypper)。zypper dupupdate の使い分けに注意
  • 移行時: コマンドは対応表で 1:1 に読み替え可能。詰まりやすいのは「インデックス更新が自動か手動か」「ローリングか固定か」の 2 点

最初の一歩: 自分の環境のディストリ系統(なぜ違うのかの表)を確認し、その列のコマンドだけを覚える。他系統は必要になったとき対応表を引けばよい。

まとめ / 次に読む