rpm / dpkg(低レベルパッケージ管理)
『rpm』はRHEL・AlmaLinux・CentOS系、『dpkg』はDebian・Ubuntu系のLinuxディストリビューションで使われる低レベルパッケージ管理ツールです。apt や dnf などの高レベルツールの裏側で動作しており、.rpm / .deb ファイルを直接インストール・削除・問い合わせ・検証できます。依存関係を自動解決しないため、依存パッケージが不足している場合はエラーになります。ダウンロード済みのパッケージファイルを手動で管理する場面や、インストール済みパッケージの詳細を調べる場面で使用します。
構文
# ===============================================
# rpm(RHEL / AlmaLinux / CentOS 系)
# ===============================================
# -----------------------------------------------
# パッケージのインストール・アップグレード
# -----------------------------------------------
# rpm -ivh {パッケージ.rpm}
# → .rpm ファイルをインストールします
# → -i: install -v: 詳細表示 -h: プログレスバー表示
# 例: sudo rpm -ivh gojo-satoru-1.0-1.x86_64.rpm
# rpm -Uvh {パッケージ.rpm}
# → パッケージをアップグレードします(未インストールの場合は新規インストール)
# → -U: upgrade
# 例: sudo rpm -Uvh gojo-satoru-2.0-1.x86_64.rpm
# rpm -Fvh {パッケージ.rpm}
# → インストール済みのパッケージのみアップグレードします
# → 未インストールの場合は何もしません(-F: freshen)
# -----------------------------------------------
# パッケージの削除
# -----------------------------------------------
# rpm -e {パッケージ名}
# → パッケージを削除します(ファイル名ではなくパッケージ名を指定します)
# 例: sudo rpm -e gojo-satoru
# rpm -e --nodeps {パッケージ名}
# → 依存関係チェックをスキップして強制削除します
# → 他のパッケージが壊れる可能性があるため慎重に使用してください
# -----------------------------------------------
# インストール済みパッケージへの問い合わせ
# -----------------------------------------------
# rpm -q {パッケージ名}
# → パッケージがインストールされているか確認します
# 例: rpm -q nginx
# rpm -qa
# → インストール済みの全パッケージを一覧表示します
# rpm -qi {パッケージ名}
# → パッケージの詳細情報(バージョン・概要・インストール日など)を表示します
# rpm -ql {パッケージ名}
# → パッケージに含まれるファイルの一覧を表示します
# rpm -qf {ファイルパス}
# → 指定したファイルがどのパッケージに属するかを確認します
# 例: rpm -qf /usr/bin/nginx
# -----------------------------------------------
# .rpm ファイルへの問い合わせ(未インストール)
# -----------------------------------------------
# rpm -qip {パッケージ.rpm}
# → .rpm ファイルの詳細情報を表示します(-p: package file)
# rpm -qlp {パッケージ.rpm}
# → .rpm ファイルに含まれるファイルの一覧を表示します
# -----------------------------------------------
# パッケージの検証
# -----------------------------------------------
# rpm -V {パッケージ名}
# → インストール済みファイルが改ざんされていないか検証します
# → 変更があったファイルにはフラグが付きます(S: サイズ, M: 権限, 5: MD5 など)
# rpm -Va
# → インストール済み全パッケージを検証します
# rpm --checksig {パッケージ.rpm}
# → .rpm ファイルの GPG 署名を検証します
# -----------------------------------------------
# GPG 鍵の管理
# -----------------------------------------------
# rpm --import {鍵ファイルまたはURL}
# → GPG 公開鍵をインポートします
# → .rpm ファイルの署名検証に使用します
# 例: sudo rpm --import https://example.com/RPM-GPG-KEY
# ===============================================
# dpkg(Debian / Ubuntu 系)
# ===============================================
# -----------------------------------------------
# パッケージのインストール・アップグレード
# -----------------------------------------------
# dpkg -i {パッケージ.deb}
# → .deb ファイルをインストールまたはアップグレードします
# → 依存パッケージが不足している場合はエラーになります
# 例: sudo dpkg -i ryomen-sukuna_1.0_amd64.deb
# dpkg -i --force-overwrite {パッケージ.deb}
# → 既存ファイルを上書きしてインストールします
# -----------------------------------------------
# パッケージの削除
# -----------------------------------------------
# dpkg -r {パッケージ名}
# → パッケージを削除します(設定ファイルは残ります)
# 例: sudo dpkg -r ryomen-sukuna
# dpkg -P {パッケージ名}
# → パッケージと設定ファイルをまとめて削除します(purge)
# -----------------------------------------------
# インストール済みパッケージへの問い合わせ
# -----------------------------------------------
# dpkg -l
# → インストール済みの全パッケージを一覧表示します
# dpkg -l {パターン}
# → パターンに一致するパッケージを一覧表示します
# 例: dpkg -l "nginx*"
# dpkg -s {パッケージ名}
# → パッケージの詳細情報(状態・バージョン・依存関係など)を表示します
# 例: dpkg -s nginx
# dpkg -L {パッケージ名}
# → パッケージがインストールしたファイルの一覧を表示します
# dpkg -S {ファイルパス}
# → 指定したファイルがどのパッケージに属するかを確認します
# 例: dpkg -S /usr/sbin/nginx
# -----------------------------------------------
# .deb ファイルへの問い合わせ(未インストール)
# -----------------------------------------------
# dpkg -I {パッケージ.deb}
# → .deb ファイルのメタ情報を表示します
# dpkg -c {パッケージ.deb}
# → .deb ファイルに含まれるファイルの一覧を表示します
# -----------------------------------------------
# .deb ファイルの展開
# -----------------------------------------------
# dpkg-deb -x {パッケージ.deb} {展開先ディレクトリ}
# → .deb ファイルの中身を指定ディレクトリに展開します
# dpkg-deb -e {パッケージ.deb} {制御情報ディレクトリ}
# → .deb ファイルの制御情報(DEBIAN/ 以下)を展開します
# -----------------------------------------------
# 依存関係の不整合を修復する
# -----------------------------------------------
# dpkg --configure -a
# → 設定が中断されたパッケージの設定を再実行します
# apt-get install -f
# → 依存関係の不整合を修復します(dpkg の後始末に使用します)
構文一覧
| 操作 | コマンド | 説明 |
|---|---|---|
| rpm(RHEL / AlmaLinux / CentOS 系) | ||
| インストール | rpm -ivh {パッケージ.rpm} | .rpm ファイルをインストールします。プログレスバー付きで詳細を表示します。 |
| アップグレード | rpm -Uvh {パッケージ.rpm} | パッケージをアップグレードします。未インストールの場合は新規インストールします。 |
| 削除 | rpm -e {パッケージ名} | パッケージを削除します。ファイル名ではなくパッケージ名を指定します。 |
| インストール確認 | rpm -q {パッケージ名} | パッケージがインストールされているか確認します。 |
| 全パッケージ一覧 | rpm -qa | インストール済みの全パッケージを一覧表示します。 |
| 詳細情報の表示 | rpm -qi {パッケージ名} | バージョン・概要・インストール日などの詳細情報を表示します。 |
| ファイル一覧 | rpm -ql {パッケージ名} | パッケージに含まれるファイルの一覧を表示します。 |
| ファイルの帰属確認 | rpm -qf {ファイルパス} | 指定したファイルがどのパッケージに属するかを確認します。 |
| 未インストール .rpm の情報 | rpm -qip {パッケージ.rpm} | .rpm ファイルのメタ情報をインストールせずに確認します。 |
| パッケージ検証 | rpm -V {パッケージ名} | インストール済みファイルが改ざんされていないか検証します。 |
| 全パッケージ検証 | rpm -Va | インストール済み全パッケージのファイルを一括検証します。 |
| 署名検証 | rpm --checksig {パッケージ.rpm} | .rpm ファイルの GPG 署名を検証します。 |
| GPG 鍵のインポート | rpm --import {鍵ファイル} | GPG 公開鍵をインポートします。署名検証に必要です。 |
| dpkg(Debian / Ubuntu 系) | ||
| インストール | dpkg -i {パッケージ.deb} | .deb ファイルをインストールまたはアップグレードします。依存パッケージが不足している場合はエラーになります。 |
| 削除 | dpkg -r {パッケージ名} | パッケージを削除します。設定ファイルはシステムに残ります。 |
| 設定ファイルごと削除 | dpkg -P {パッケージ名} | パッケージと設定ファイルをまとめて削除します。 |
| 全パッケージ一覧 | dpkg -l | インストール済みの全パッケージを状態フラグ付きで一覧表示します。 |
| 詳細情報の表示 | dpkg -s {パッケージ名} | パッケージの状態・バージョン・依存関係などの詳細情報を表示します。 |
| ファイル一覧 | dpkg -L {パッケージ名} | パッケージがインストールしたファイルの一覧を表示します。 |
| ファイルの帰属確認 | dpkg -S {ファイルパス} | 指定したファイルがどのパッケージに属するかを確認します。 |
| 未インストール .deb の情報 | dpkg -I {パッケージ.deb} | .deb ファイルのメタ情報をインストールせずに確認します。 |
| 未インストール .deb のファイル一覧 | dpkg -c {パッケージ.deb} | .deb ファイルに含まれるファイルの一覧を表示します。 |
| .deb の展開 | dpkg-deb -x {パッケージ.deb} {ディレクトリ} | .deb ファイルの中身を指定ディレクトリに展開します。 |
| 設定の再実行 | dpkg --configure -a | 設定が中断されたパッケージの設定を再実行します。 |
| 依存不整合の修復 | apt-get install -f | dpkg 操作後の依存関係の不整合を修復します。 |
使用例
# ----------------------------------------------- # rpm: .rpm ファイルのインストールと確認 # ----------------------------------------------- # AlmaLinux 環境でダウンロード済みの .rpm ファイルをインストールします sudo rpm -ivh gojo-satoru-tools-1.0-1.el9.x86_64.rpm # インストールが成功したか確認します rpm -q gojo-satoru-tools # インストールされたファイルの一覧を確認します rpm -ql gojo-satoru-tools
実行するコマンドは次の通りです。
$ sudo rpm -ivh gojo-satoru-tools-1.0-1.el9.x86_64.rpm Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:gojo-satoru-tools-1.0-1.el9 ################################# [100%] $ rpm -q gojo-satoru-tools gojo-satoru-tools-1.0-1.el9.x86_64
rpm: インストール済みパッケージのファイル帰属を確認する
# ----------------------------------------------- # 指定したコマンドがどのパッケージに含まれるかを調べます # ----------------------------------------------- # /usr/bin/curl がどのパッケージに属するか確認します rpm -qf /usr/bin/curl # そのパッケージの詳細情報を表示します rpm -qi curl
実行するコマンドは次の通りです。
$ rpm -qf /usr/bin/curl curl-7.76.1-29.el9.x86_64 $ rpm -qi curl Name : curl Version : 7.76.1 Release : 29.el9 Architecture: x86_64 Install Date: Mon 10 Mar 2025 09:00:00 AM JST Group : Unspecified Size : 695019 License : curl Summary : A utility for getting files from remote servers (FTP, HTTP, and others)
rpm: パッケージの整合性を検証する
# ----------------------------------------------- # インストール後にファイルが改ざんされていないか確認します # ----------------------------------------------- # nginx パッケージのファイルを検証します rpm -V nginx
実行するコマンドは次の通りです。
$ rpm -V nginx S.5....T. c /etc/nginx/nginx.conf
実装例は次の通りです。
# 出力の読み方(フラグの意味) # S: ファイルサイズが変わっています # 5: MD5チェックサムが変わっています(内容が変更されています) # T: 更新日時が変わっています # c: 設定ファイルであることを示します # → /etc/nginx/nginx.conf は設定変更済みのため正常です # → 出力がなければファイルは改ざんされていません
dpkg: .deb ファイルのインストールと依存不整合の修復
# ----------------------------------------------- # Ubuntu 環境でダウンロード済みの .deb ファイルをインストールします # ----------------------------------------------- # megumi-fushiguro-tools_1.0_amd64.deb をインストールします sudo dpkg -i megumi-fushiguro-tools_1.0_amd64.deb
実行するコマンドは次の通りです。
$ sudo dpkg -i megumi-fushiguro-tools_1.0_amd64.deb Selecting previously unselected package megumi-fushiguro-tools. (Reading database ... 85432 files and directories currently installed.) Preparing to unpack megumi-fushiguro-tools_1.0_amd64.deb ... Unpacking megumi-fushiguro-tools (1.0) ... dpkg: dependency problems prevent configuration of megumi-fushiguro-tools: megumi-fushiguro-tools depends on libshadow-style (>= 2.0); however: Package libshadow-style is not installed. dpkg: error processing package megumi-fushiguro-tools (--install): dependency problems - leaving unconfigured Errors were encountered while processing: megumi-fushiguro-tools
実装例は次の通りです。
# 依存パッケージが不足しているエラーが発生しました # apt-get install -f で依存関係を自動解決します sudo apt-get install -f
実行するコマンドは次の通りです。
$ sudo apt-get install -f Reading package lists... Done Building dependency tree... Done The following additional packages will be installed: libshadow-style The following NEW packages will be installed: libshadow-style 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. After this operation, 512 kB of disk space will be used. Do you want to continue? [Y/n] y (依存パッケージがインストールされ、設定が完了します)
dpkg: インストール済みパッケージを調べる
# ----------------------------------------------- # インストール状態の確認と詳細情報の表示 # ----------------------------------------------- # インストール済みパッケージを一覧表示して nginx を絞り込みます # 出力フォーマット: ii = インストール済み, rc = 削除済みだが設定ファイルが残っている dpkg -l | grep nginx # nginx の詳細情報を表示します dpkg -s nginx # nginx がインストールしたファイルを確認します dpkg -L nginx | head -20
実行するコマンドは次の通りです。
$ dpkg -l | grep nginx ii nginx 1.24.0-1ubuntu1 amd64 high performance web server $ dpkg -s nginx Package: nginx Status: install ok installed Priority: optional Section: httpd Installed-Size: 126 Maintainer: Ubuntu Developers Architecture: amd64 Version: 1.24.0-1ubuntu1 Depends: libpcre3, libssl3 (>= 3.0.0), zlib1g (>= 1:1.1.4) Description: high performance web server $ dpkg -L nginx | head -20 /. /etc /etc/nginx /etc/nginx/sites-available /etc/nginx/sites-available/default /etc/nginx/sites-enabled /usr /usr/sbin /usr/sbin/nginx
dpkg: .deb ファイルの中身をインストールせずに確認する
# ----------------------------------------------- # インストール前に .deb ファイルの内容を確認します # ----------------------------------------------- # nobara-kugisaki_2.0_amd64.deb のメタ情報を表示します dpkg -I nobara-kugisaki_2.0_amd64.deb # .deb ファイルに含まれるファイルの一覧を確認します dpkg -c nobara-kugisaki_2.0_amd64.deb
実行するコマンドは次の通りです。
$ dpkg -I nobara-kugisaki_2.0_amd64.deb
new Debian package, version 2.0.
size 10485760 bytes: control archive=2048 bytes.
512 bytes, 15 lines control
Package: nobara-kugisaki
Version: 2.0
Architecture: amd64
Maintainer: Jujutsu <packages@jujutsu.example>
Installed-Size: 40960
Depends: libc6 (>= 2.35)
Description: Nobara Kugisaki hammer tools
$ dpkg -c nobara-kugisaki_2.0_amd64.deb
drwxr-xr-x root/root 0 2025-01-01 00:00 ./
drwxr-xr-x root/root 0 2025-01-01 00:00 ./usr/
drwxr-xr-x root/root 0 2025-01-01 00:00 ./usr/bin/
-rwxr-xr-x root/root 40960 2025-01-01 00:00 ./usr/bin/kugisaki
概要
『rpm』と『dpkg』はそれぞれ RHEL 系・Debian 系 Linux の低レベルパッケージ管理ツールです。dnf / yum や apt などの高レベルツールが依存関係の自動解決やリポジトリからのダウンロードを担うのに対し、rpm と dpkg は手元にある .rpm / .deb ファイルを直接操作します。高レベルツールでは取得できないインターネット非接続環境でのインストール、パッケージの署名検証、特定ファイルの帰属確認、インストール済みファイルの改ざん検知といった用途で力を発揮します。dpkg -i で依存エラーが発生した場合は apt-get install -f で修復するのが定番の手順です。通常の運用では dnf や apt を使い、低レベルな調査・検証が必要になったときに rpm / dpkg を使うという使い分けがおすすめです。pacman(Arch Linux 系)のように独自の低レベルツールを持つディストリビューションもあります。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。