1088 文字
5 分

RPM ↔ dpkg コマンド変換表(dnf / apt 対応版)

2008-12-08
2026-07-13

あなたは、rpm派?dpkg派?私は断然dpkg派です。

この記事は2008年に書いたものですが、その後パッケージ管理ツールの世代交代が進みました。RHEL系ではyumがdnfに、Debian系ではaptitude/apt-getがaptに置き換わっています。現在の環境に合わせて対応表を更新しました。

低レベルツールと高レベルツールの関係#

まず前提として、各ディストリビューションのパッケージ管理は「低レベルツール」と「高レベルツール」の2層構造になっています。

系統低レベル(単一パッケージ操作)高レベル(依存関係解決・リポジトリ管理)
RHEL / Fedora系rpmdnf(旧yum)
Debian / Ubuntu系dpkgapt(旧apt-get / aptitude)
  • RHEL 8以降ではyumコマンドはdnfへのシンボリックリンクになっており、実体はdnfです。Fedora 41以降はさらに高速化されたDNF5に移行しています。
  • Debian / Ubuntuでは対話的な操作にはaptの使用が推奨されています。apt-getとapt-cacheは後方互換性が必要なスクリプト向けです。aptitudeは現在では標準インストールされないことが多くなりました。

rpmとdpkgの違い#

私がdpkg派である理由は、アンインストール時の設定ファイルの扱いです。

  • rpmでパッケージを削除すると、変更した設定ファイルは.rpmsaveという拡張子を付けてリネームされます。
  • dpkgは設定ファイルを残すか消すかをオプションで明示的に指定できます。dpkg -r(remove)は設定ファイルを残し、dpkg -P(purge)は設定ファイルごと削除します。

「いったん削除して設定を作り直したい」のか「設定を残したまま入れ直したい」のかを操作する側が選べるのは、dpkg / aptの美点だと思います。

追加・削除#

操作rpmdnfdpkgapt
リポジトリからインストール-dnf install foo-apt install foo
ローカルファイルをインストールrpm -ivh foo.rpmdnf install ./foo.rpmdpkg -i foo.debapt install ./foo.deb
パッケージをアップグレードrpm -Uvh foo.rpmdnf upgrade foo-apt install --only-upgrade foo
アンインストール(設定を残す)--dpkg -r fooapt remove foo
アンインストール(設定ごと削除)rpm -e foodnf remove foodpkg -P fooapt purge foo
全パッケージをアップグレード-dnf upgrade-apt update && apt upgrade
不要になった依存パッケージを削除-dnf autoremove-apt autoremove

ローカルの.rpm / .debファイルも、現在はdnf install ./foo.rpmapt install ./foo.debのように高レベルツールに渡せば依存関係を解決しながらインストールできます。rpm -ivhdpkg -iで入れて依存関係エラーに悩まされる場面は減りました。

情報表示#

低レベルツール同士の対応です。このあたりは昔から変わっていません。

操作rpmdpkg
インストール済みパッケージの一覧rpm -qadpkg -l
パッケージfooに含まれるファイルの一覧rpm -ql foodpkg -L foo
ファイルがどのパッケージ由来か調べるrpm -qf /path/to/filedpkg -S /path/to/file
インストール済みパッケージの情報表示rpm -qi foodpkg -s foo
パッケージファイルの情報表示rpm -qip foo.rpmdpkg -I foo.deb
パッケージファイル内のファイル一覧rpm -qlp foo.rpmdpkg -c foo.deb

検索・リポジトリ操作#

高レベルツール同士の対応です。

操作dnfapt
パッケージを検索dnf search fooapt search foo
パッケージ情報を表示dnf info fooapt show foo
リポジトリ情報を更新dnf makecacheapt update
インストール済みパッケージの一覧dnf list installedapt list --installed
ファイルを含むパッケージを検索dnf provides /path/to/fileapt-file search /path/to/file
操作履歴の表示dnf historyless /var/log/apt/history.log

apt側のapt-fileは別途インストールが必要です。dnfのprovidesは未インストールのパッケージも対象になるので、「このコマンドはどのパッケージに入っているのか」を調べるときに便利です。

最近のパッケージ管理事情#

この記事を書いた2008年から、パッケージ管理を取り巻く状況も変わりました。

  • コンテナの普及: アプリケーションの配布はDockerイメージやOCIイメージで行われることが増え、ホストOSに直接パッケージをインストールする機会自体が減っています。とはいえコンテナイメージのビルド(Dockerfile)の中では相変わらずaptやdnfが主役です。
  • ディストリビューション非依存のパッケージ形式: FlatpakやSnapのように、rpm / debの垣根を超えてデスクトップアプリを配布する仕組みが定着しました。
  • イミュータブルOS: Fedora Silverblue(rpm-ostree)やUbuntu Coreのように、OS本体を読み取り専用にしてアトミックに更新するディストリビューションも登場しています。

それでもサーバー運用やコンテナイメージ作成の現場では、rpm / dpkgとdnf / aptの知識は現役です。両方の系統を行き来する人の参考になれば幸いです。

他に便利なコマンドがあったら教えてください。

この記事が役に立ったら
GitHub Sponsorsで応援できます

コメント