パッケージマネージャ(package manager)概観 - apt / dnf / pacman / zypper の地図
パッケージマネージャとは何か?
結論: パッケージマネージャは、ソフトウェアの導入・更新・削除・依存解決を一手に引き受けるツール。ディストリビューションごとに
apt/dnf/pacman/zypperと名前は違うが、やることは同じ。
Linux でソフトウェアを入れるとき、Windows のように個別のインストーラを探して回る必要はない。パッケージマネージャが中央のリポジトリから目的のパッケージを取得し、依存関係(必要な別のライブラリ)を自動で解決して導入する。
この記事の狙いは、4 大パッケージマネージャを 1 枚の地図 にまとめること。コマンド名は違っても「更新インデックスの取得 → インストール → 検索 → 削除」という操作の型は共通である。型さえ掴めば、未経験のディストリでも迷わない。
この記事の対象
- 複数ディストリを触る / 触る予定がある中級者
aptは使えるがdnfやpacmanで手が止まる人- 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 dupとupdateの使い分けに注意 - 移行時: コマンドは対応表で 1:1 に読み替え可能。詰まりやすいのは「インデックス更新が自動か手動か」「ローリングか固定か」の 2 点
最初の一歩: 自分の環境のディストリ系統(なぜ違うのかの表)を確認し、その列のコマンドだけを覚える。他系統は必要になったとき対応表を引けばよい。