Linuxを使っていると、「このマシンにはどんなアプリ(パッケージ)が入っているんだろう?」と調べたくなる場面がよくあります。
特に以下のような状況で、インストール済みソフトウェアの確認が必要になります:
「新しく引き継いだサーバーに何が入っているか把握したい」 「システムの容量を空けるため、不要なアプリを見つけたい」 「別の環境に同じ構成を再現したい」 「セキュリティ監査で全てのパッケージを把握する必要がある」 「特定のソフトウェアがインストールされているか確認したい」
この記事では、主要なLinuxディストリビューション別にインストール済みのアプリ(パッケージ)一覧を表示する方法を、初心者の方にもわかりやすく解説します。
Linuxのパッケージ管理の基礎知識

パッケージとは
Linuxでは、ソフトウェアは「パッケージ」という単位で管理されています。パッケージには以下の情報が含まれています:
- ソフトウェア本体
- 設定ファイル
- 依存関係の情報
- インストール・削除用のスクリプト
- バージョン情報
主要なパッケージ管理システム
Linuxディストリビューションによって、使用するパッケージ管理システムが異なります:
ディストリビューション | パッケージ形式 | 管理コマンド |
---|---|---|
Ubuntu、Debian | .deb | dpkg、apt |
CentOS、RHEL、Rocky | .rpm | rpm、yum、dnf |
Fedora | .rpm | rpm、dnf |
Arch Linux、Manjaro | .pkg.tar.xz | pacman |
openSUSE | .rpm | rpm、zypper |
Debian / Ubuntu系でのパッケージ一覧表示
dpkgコマンドの基本的な使い方
最も基本的なコマンド
dpkg -l
このコマンドを実行すると、以下のような形式で表示されます:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================-=============-============-================
ii adduser 3.118ubuntu5 all add and remove users and groups
ii apache2 2.4.41-4ubunt amd64 Apache HTTP Server
出力の見方
- 最初の列:パッケージの状態(ii = インストール済み)
- Name:パッケージ名
- Version:バージョン
- Architecture:アーキテクチャ(amd64、i386、allなど)
- Description:説明
より詳細な情報を取得
特定のパッケージを検索
dpkg -l | grep nginx
パッケージ名のみをシンプルに表示
dpkg-query -f '${binary:Package}\n' -W
インストールされているパッケージ数を確認
dpkg -l | wc -l
特定のパッケージの詳細情報
dpkg -s nginx
aptコマンドでの一覧表示
インストール済みパッケージの表示
apt list --installed
特定のパターンで検索
apt list --installed | grep -i python
CentOS / RHEL / Rocky / AlmaLinux系でのパッケージ一覧表示

rpmコマンドの基本的な使い方
最も基本的なコマンド
rpm -qa
このコマンドの出力例:
NetworkManager-1.22.8-4.el8.x86_64
NetworkManager-libnm-1.22.8-4.el8.x86_64
acl-2.2.53-1.el8.x86_64
audit-libs-3.0-0.17.20191104git1c2f876.el8.x86_64
オプションの詳細
-q
:query(問い合わせ)-a
:all(すべて)
より詳細な情報を取得
特定のパッケージを検索
rpm -qa | grep httpd
インストール日時順に並べる
rpm -qa --last
パッケージサイズも表示
rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE} %{SIZE}\n'
特定のパッケージの詳細情報
rpm -qi httpd
yumコマンドでの一覧表示(CentOS 7以前)
インストール済みパッケージの表示
yum list installed
グループ別のパッケージ表示
yum grouplist
Fedora / CentOS 8以降 / RHEL 8以降でのパッケージ一覧表示
dnfコマンドの基本的な使い方
インストール済みパッケージの表示
dnf list installed
より詳細な表示
dnf list installed --verbose
特定のパッケージグループの確認
dnf group list installed
dnfの便利な機能
パッケージの履歴確認
dnf history
特定のファイルを含むパッケージを探す
dnf provides /usr/bin/vim
パッケージの依存関係確認
dnf deplist package_name
Arch Linux / Manjaroでのパッケージ一覧表示

pacmanコマンドの基本的な使い方
インストール済みパッケージの表示
pacman -Q
詳細情報付きで表示
pacman -Qi
明示的にインストールしたパッケージのみ表示
pacman -Qe
依存関係として自動インストールされたパッケージ
pacman -Qd
より高度な検索
特定のパッケージの詳細情報
pacman -Qi package_name
孤立したパッケージ(不要になったパッケージ)を探す
pacman -Qdt
パッケージのファイル一覧
pacman -Ql package_name
openSUSEでのパッケージ一覧表示
zypperコマンドの使い方
インストール済みパッケージの表示
zypper search -i
詳細な情報付きで表示
zypper info --installed-only
フラットパッケージシステム(Snap、Flatpak、AppImage)
Snapパッケージの確認
インストール済みSnapパッケージ
snap list
詳細情報の表示
snap info package_name
Flatpakパッケージの確認
インストール済みFlatpakアプリ
flatpak list
アプリケーション情報の詳細表示
flatpak info app_id
実用的な活用方法

パッケージリストをファイルに保存
基本的な保存方法
# Debian/Ubuntu系
dpkg -l > installed_packages_$(date +%Y%m%d).txt
# CentOS/RHEL系
rpm -qa > installed_packages_$(date +%Y%m%d).txt
# Arch Linux系
pacman -Q > installed_packages_$(date +%Y%m%d).txt
CSVファイル形式で保存
# Debian/Ubuntu系でCSV形式
dpkg-query -f '${binary:Package},${Version},${Architecture}\n' -W > packages.csv
2台のサーバー間でパッケージを比較
リストの差分確認
# server1でパッケージリスト作成
dpkg -l > server1_packages.txt
# server2でパッケージリスト作成
dpkg -l > server2_packages.txt
# 差分確認
diff server1_packages.txt server2_packages.txt
特定の条件でパッケージを抽出
開発関連パッケージのみ抽出
dpkg -l | grep -E "(dev|devel|build)"
Pythonに関連するパッケージを探す
rpm -qa | grep -i python
システムパッケージとユーザーパッケージを分ける
# Arch Linuxでユーザーが明示的にインストールしたもの
pacman -Qe
# 依存関係で自動インストールされたもの
pacman -Qd
トラブルシューティング
よくある問題と対処法
パッケージデータベースが壊れた場合
# Debian/Ubuntu系
sudo dpkg --configure -a
sudo apt update
# CentOS/RHEL系
sudo yum clean all
sudo yum makecache
パッケージ一覧が表示されない場合
# 権限確認
ls -la /var/lib/dpkg/status # Debian/Ubuntu
ls -la /var/lib/rpm/ # CentOS/RHEL
古いパッケージ情報をクリア
# キャッシュクリア
sudo apt clean # Debian/Ubuntu
sudo yum clean all # CentOS/RHEL
sudo dnf clean all # Fedora
パフォーマンスの最適化
大量のパッケージを効率的に処理
# ページング付きで表示
dpkg -l | less
# 特定の列のみ抽出
dpkg-query -f '${binary:Package}\n' -W | sort
自動化とスクリプト化

システム監査用スクリプトの例
パッケージ情報収集スクリプト
#!/bin/bash
# system_audit.sh
DATE=$(date +%Y%m%d_%H%M%S)
HOSTNAME=$(hostname)
OUTPUT_DIR="/tmp/audit_$HOSTNAME_$DATE"
mkdir -p "$OUTPUT_DIR"
# ディストリビューション判定
if command -v dpkg &> /dev/null; then
echo "Debian/Ubuntu system detected"
dpkg -l > "$OUTPUT_DIR/packages_dpkg.txt"
apt list --installed > "$OUTPUT_DIR/packages_apt.txt"
elif command -v rpm &> /dev/null; then
echo "Red Hat based system detected"
rpm -qa > "$OUTPUT_DIR/packages_rpm.txt"
if command -v dnf &> /dev/null; then
dnf list installed > "$OUTPUT_DIR/packages_dnf.txt"
elif command -v yum &> /dev/null; then
yum list installed > "$OUTPUT_DIR/packages_yum.txt"
fi
elif command -v pacman &> /dev/null; then
echo "Arch based system detected"
pacman -Q > "$OUTPUT_DIR/packages_pacman.txt"
pacman -Qe > "$OUTPUT_DIR/packages_explicit.txt"
fi
# システム情報も収集
uname -a > "$OUTPUT_DIR/system_info.txt"
lsb_release -a > "$OUTPUT_DIR/distro_info.txt" 2>/dev/null
echo "Audit completed. Results saved in: $OUTPUT_DIR"
定期的なパッケージ監視
変更監視スクリプト
#!/bin/bash
# package_monitor.sh
BASELINE="/var/log/packages_baseline.txt"
CURRENT="/tmp/packages_current.txt"
# 現在のパッケージリストを作成
dpkg -l > "$CURRENT"
# ベースラインファイルが存在しない場合は作成
if [ ! -f "$BASELINE" ]; then
cp "$CURRENT" "$BASELINE"
echo "Baseline created"
exit 0
fi
# 差分確認
if ! diff -q "$BASELINE" "$CURRENT" > /dev/null; then
echo "Package changes detected:"
diff "$BASELINE" "$CURRENT"
# 新しいベースラインとして保存するか確認
read -p "Update baseline? (y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
cp "$CURRENT" "$BASELINE"
echo "Baseline updated"
fi
else
echo "No package changes detected"
fi
rm "$CURRENT"
セキュリティ監査での活用
脆弱性チェックとの連携
インストール済みパッケージの脆弱性確認
# Ubuntu/Debianでの脆弱性確認
apt list --upgradable
# 特定のパッケージの脆弱性情報
apt show package_name
パッケージの完整性チェック
# RPM系でのファイル完整性確認
rpm -Va
# Debian系でのファイル完整性確認
debsums -c
まとめ
ディストリビューション別基本コマンド早見表
ディストリビューション | 基本コマンド | 詳細表示 | 検索 |
---|---|---|---|
Ubuntu / Debian | dpkg -l | dpkg -s package | dpkg -l | grep pattern |
CentOS / RHEL (7以前) | rpm -qa | rpm -qi package | rpm -qa | grep pattern |
CentOS / RHEL (8以降) | dnf list installed | dnf info package | dnf list installed | grep pattern |
Fedora | dnf list installed | dnf info package | dnf list installed | grep pattern |
Arch / Manjaro | pacman -Q | pacman -Qi package | pacman -Q | grep pattern |
openSUSE | zypper search -i | zypper info package | zypper search -i pattern |
実用的な活用ポイント
- システム移行時のパッケージリスト作成
- セキュリティ監査での完全な環境把握
- 容量削減のための不要パッケージ特定
- 開発環境の複製・同期
- トラブルシューティング時の環境確認
コメント