LPIC Level1 復習ラジオ 08:パッケージ管理

投稿日:2026-07-11

音声

※ AI音声で読み上げます

目次

  1. パッケージ管理とは
  2. パッケージ・依存関係・リポジトリ
  3. RPM系とDebian系
  4. rpm
  5. yum
  6. dnf
  7. dpkg
  8. apt
  9. リポジトリの設定
  10. 署名・キャッシュ・トラブル対応
  11. 30秒チェック
  12. 要約

パッケージ管理とは

Linuxでは、アプリケーションやライブラリをパッケージという単位で管理します。

パッケージには、実行ファイルや設定ファイルだけでなく、名前、バージョン、対応するCPUアーキテクチャ、必要な別パッケージ、インストール時に実行するスクリプトなどのメタデータも含まれます。

パッケージ管理システムを使うと、ソフトウェアのインストール、更新、削除、検索、整合性確認を一定の方法で行えます。

パッケージ・依存関係・リポジトリ

依存関係

あるパッケージが動作するために、別のライブラリやパッケージを必要とする関係を依存関係と呼びます。

例えば、アプリケーションAがライブラリBを必要とする場合、Aだけをインストールしても正常に動作しません。aptyumdnfは、設定されたリポジトリの情報を使って必要な依存パッケージを探し、まとめて処理します。

競合

同時にインストールできないパッケージや、同じ機能・ファイルを競合する形で提供するパッケージがある場合、パッケージ管理ツールは処理を拒否したり、入れ替えを提案したりします。

リポジトリ

リポジトリは、パッケージ本体と、パッケージ名、バージョン、依存関係などのメタデータを公開する保管場所です。

パッケージ管理ツールは、リポジトリのメタデータを取得して、検索や依存関係の解決を行います。

パッケージファイルとパッケージ名

ローカルにあるパッケージファイルを指定する場合と、リポジトリ上のパッケージ名を指定する場合は区別します。

# ローカルのDebianパッケージファイル
sudo dpkg -i ./example_1.0_amd64.deb

# リポジトリ上のパッケージ名
sudo apt install example

ローカルファイルを直接扱う基本ツールは、依存関係を自動取得しないことがあります。一方、上位ツールはリポジトリを参照して依存関係を解決します。

RPM系とDebian系

LPIC Level1では、RPM系とDebian系の両方を整理します。

分類 RPM系 Debian系
代表的なディストリビューション Red Hat Enterprise Linux、Fedora、Rocky Linuxなど Debian、Ubuntuなど
パッケージ形式 .rpm .deb
基本ツール rpm dpkg
上位ツール yumdnf aptapt-getapt-cache
主なリポジトリ設定 /etc/yum.repos.d/*.repo /etc/apt/sources.list/etc/apt/sources.list.d/

rpmdpkgは、インストール済みデータベースへの問い合わせや、手元のパッケージファイルの操作に使われます。

aptyumdnfは、リポジトリからパッケージ情報を取得し、依存関係を解決しながら複数のパッケージを一つの処理単位として扱います。

rpm

rpmは、RPMパッケージのインストール、更新、削除、問い合わせ、検証などを行うコマンドです。

インストール・更新・削除

sudo rpm -ivh package.rpm
sudo rpm -Uvh package.rpm
sudo rpm -Fvh package.rpm
sudo rpm -e package_name
オプション 意味
-i パッケージを新規インストールする
-U アップグレードする。未導入なら新規インストールする
-F すでに導入済みのパッケージだけを更新する
-e パッケージを削除する
-v 詳細を表示する
-h 進行状況をハッシュ記号で表示する

rpm -eでは、通常、パッケージファイル名ではなくインストール済みのパッケージ名を指定します。

rpmは必要な依存関係を確認しますが、通常は不足するパッケージをリポジトリから自動取得しません。日常的なインストールでは、dnfyumを使う方が安全です。

問い合わせ

rpm -q bash
rpm -qa
rpm -qi bash
rpm -ql bash
rpm -qf /bin/bash
rpm -qp package.rpm
rpm -qpl package.rpm
コマンド 確認内容
rpm -q パッケージ名 指定したパッケージが導入済みか確認する
rpm -qa 導入済みの全パッケージを表示する
rpm -qi パッケージの詳細情報を表示する
rpm -ql パッケージから導入されたファイルを表示する
rpm -qf ファイル そのファイルを所有するパッケージを調べる
-p インストール済みではなく、パッケージファイルを問い合わせ対象にする

検証

rpm -V bash
rpm -Va
rpm -K package.rpm

rpm -Vは、インストール時に記録された情報と現在のファイル属性を比較します。何も表示されなければ、検査対象に差異が見つからなかったことを表します。

rpm -Kは、パッケージファイルの署名やダイジェストを確認します。

RPMデータベースの場所は、ディストリビューションやRPMのバージョンにより異なることがあります。実際の設定値は次のように確認できます。

rpm --eval '%{_dbpath}'

yum

yumは、RPMリポジトリを利用して、依存関係を解決しながらパッケージを管理する上位ツールです。

古いRHEL系環境では従来のYUMが使われてきました。RHEL 8以降では、yumコマンドがDNF技術を基盤とするYUM v4として提供され、互換性のためdnfとほぼ同様に利用できる環境があります。

sudo yum install package_name
sudo yum remove package_name
sudo yum update
yum search keyword
yum info package_name
yum list installed
yum provides '/usr/bin/example'
yum repolist
sudo yum clean all
サブコマンド 主な用途
install パッケージと必要な依存関係を導入する
remove パッケージを削除する
update 更新可能なパッケージを更新する
search 名前や説明からパッケージを検索する
provides 指定したファイルや機能を提供するパッケージを探す
repolist 利用可能なリポジトリを表示する
clean all 取得済みのメタデータやキャッシュを削除する

-yを付けると確認に自動でyesと答えます。ただし、削除や大量更新では処理内容を確認できなくなるため、目的が明確な場合に使います。

dnf

dnfは、Fedoraや新しいRHEL系ディストリビューションで使われるRPM系のパッケージ管理ツールです。

パッケージの検索、依存関係の解決、インストール、更新、削除、リポジトリ管理、処理履歴の確認などを行えます。

sudo dnf install package_name
sudo dnf upgrade
sudo dnf remove package_name
sudo dnf autoremove
dnf search keyword
dnf info package_name
dnf list installed
dnf provides '/usr/bin/example'
dnf repolist
dnf history
sudo dnf makecache
sudo dnf clean all

yumとdnfの対応

基本的な操作では、yum installdnf installyum removednf removeのように、似たサブコマンドを利用できます。

ただし、古いYUMとDNFでは細かな挙動やオプションに差があります。対象システムのバージョンとmanページを確認します。

履歴

dnf history
dnf history info transaction_id

dnf historyでは、過去のインストール、更新、削除などのトランザクションを確認できます。

不要な依存パッケージ

dnf autoremoveは、依存関係として自動導入された後、どのユーザー導入パッケージからも必要とされなくなったパッケージを削除対象にします。

dpkg

dpkgは、Debianパッケージをインストール、削除、問い合わせ、設定する基本ツールです。

公式manページでは、Debianパッケージを扱う中間レベルのツールと説明され、一般利用者向けの上位インターフェースとしてaptが案内されています。

インストール・削除・設定

sudo dpkg -i package.deb
sudo dpkg -r package_name
sudo dpkg -P package_name
sudo dpkg --configure -a
操作 意味
-i ローカルのDebianパッケージファイルをインストールする
-r 設定ファイルを残してパッケージを削除する
-P 設定ファイルも含めてパッケージを完全削除する
--configure -a 展開済みだが未設定のパッケージをまとめて設定する

dpkg -iはローカルファイルを展開・導入しますが、不足する依存パッケージをリポジトリから自動取得しません。ローカルの.debを依存関係込みで導入したい場合は、次のようにaptへファイルパスを渡せます。

sudo apt install ./package.deb

問い合わせ

dpkg -l
dpkg -s bash
dpkg -L bash
dpkg -S /bin/bash
dpkg-deb -I package.deb
dpkg-deb -c package.deb
コマンド 確認内容
dpkg -l パッケージ一覧と状態を表示する
dpkg -s インストール済みパッケージの状態や詳細を表示する
dpkg -L パッケージから導入されたファイルを表示する
dpkg -S ファイル そのファイルを所有するパッケージを調べる
dpkg-deb -I .debファイルのパッケージ情報を表示する
dpkg-deb -c .debファイルの内容一覧を表示する

dpkgの管理情報は、主に/var/lib/dpkg/以下に保存されます。/var/lib/dpkg/statusには、パッケージの状態情報が記録されます。

apt

aptは、Debian系のパッケージ管理システムに対する高レベルのコマンドラインインターフェースです。

リポジトリからパッケージ情報を取得し、依存関係を解決しながらインストール、更新、削除、検索などを行います。

更新情報とパッケージの更新

sudo apt update
apt list --upgradable
sudo apt upgrade
sudo apt full-upgrade
コマンド 意味
apt update リポジトリから最新のパッケージ一覧を取得する
apt list --upgradable 更新可能なパッケージを表示する
apt upgrade 必要なら新規依存パッケージを追加するが、既存パッケージを削除せずに更新する
apt full-upgrade システム全体の更新に必要な場合、既存パッケージの削除も含めて処理する

apt updateだけでは、通常、インストール済みパッケージ本体は更新されません。更新候補を判断するためのパッケージ一覧を新しくします。

インストール・削除

sudo apt install package_name
sudo apt reinstall package_name
sudo apt remove package_name
sudo apt purge package_name
sudo apt autoremove
  • remove:パッケージを削除するが、パッケージ管理対象の設定ファイルを一部残す
  • purge:パッケージ管理対象の設定ファイルも含めて削除する
  • autoremove:依存関係として導入された後、不要になったパッケージを削除する

purgeを実行しても、通常、利用者のホームディレクトリに作られた個人データや個人設定まで自動削除するわけではありません。

検索・確認

apt search keyword
apt show package_name
apt list --installed
apt-cache policy package_name
apt-cache depends package_name
apt-cache rdepends package_name

apt-cache policyでは、インストール済みの版、候補となる版、どのリポジトリから取得されるかなどを確認できます。

aptとapt-get

aptは、人が対話的に利用しやすい表示や既定値を持つコマンドです。スクリプトでは、動作の互換性を重視してapt-getapt-cacheなどの専用コマンドが使われることがあります。

リポジトリの設定

Debian系

APTの主な取得元は、次のファイルで設定されます。

/etc/apt/sources.list
/etc/apt/sources.list.d/*.list
/etc/apt/sources.list.d/*.sources

.listは一行形式、.sourcesはdeb822形式の設定に使われます。近年のDebian系環境では、.sources形式を利用する構成も増えています。

apt policy
apt-cache policy

リポジトリ設定を変更した後は、通常、apt updateでパッケージ一覧を取得し直します。

RPM系

DNFやYUMのリポジトリは、主に次の場所で設定されます。

/etc/dnf/dnf.conf
/etc/yum.conf
/etc/yum.repos.d/*.repo

.repoファイルには、リポジトリID、表示名、取得元、使用可否、GPG署名確認の設定などを記述します。

dnf repolist
dnf repolist --all
dnf repoinfo

一時的に特定のリポジトリだけを有効・無効にするオプションもあります。

dnf --enablerepo=repo_id install package_name
dnf --disablerepo=repo_id upgrade

署名・キャッシュ・トラブル対応

署名と信頼

パッケージ管理システムは、パッケージやリポジトリメタデータの署名を確認し、信頼された鍵で作成されたものか、途中で改変されていないかを検証します。

署名確認を無効化するオプションは存在しますが、安全性を下げるため、原因を理解せず常用しません。鍵やリポジトリ設定の問題を確認します。

キャッシュとメタデータ

# Debian系
sudo apt update
sudo apt clean
sudo apt autoclean

# RPM系
sudo dnf makecache
sudo dnf clean all

apt cleanは取得済みのパッケージファイルを削除します。apt autocleanは、現在取得できなくなった古いパッケージファイルなどを削除します。

dnf makecacheは、リポジトリのメタデータキャッシュを作成します。dnf clean allは、保存されたメタデータやパッケージキャッシュなどを削除します。

よくある切り分け

症状 主な確認内容
パッケージが見つからない パッケージ名、リポジトリ設定、有効状態、メタデータ更新
名前解決や接続で失敗する DNS、プロキシ、時刻、証明書、リポジトリURL、ネットワーク疎通
依存関係エラー 混在したリポジトリ、保留パッケージ、途中で止まった処理、競合
dpkg処理が中断されている sudo dpkg --configure -a、その後のAPT修復処理
どのパッケージのファイルか知りたい rpm -qf ファイルdpkg -S ファイル

基本の確認コマンド

# RPM系
rpm -q package_name
rpm -qa
dnf repolist
dnf info package_name
dnf history

# Debian系
dpkg -s package_name
dpkg -l
apt-cache policy package_name
apt list --upgradable

詳しい使い方は、次のマニュアルでも確認できます。

man rpm
man dnf
man yum
man dpkg
man dpkg-query
man apt
man apt-get
man apt-cache
man sources.list

30秒チェック

  1. RPM系で、ローカルのRPMパッケージを直接扱う基本コマンドは何でしょうか。
  2. Debian系で、ローカルのDebianパッケージを直接扱う基本コマンドは何でしょうか。
  3. apt updateは、主に何を更新するコマンドでしょうか。
  4. apt removeapt purgeの主な違いは何でしょうか。
  5. 指定したファイルを所有するインストール済みパッケージを調べる、RPM系とDebian系のコマンドは何でしょうか。
  6. rpm -Urpm -Fの違いは何でしょうか。
答えを表示
  1. rpm
  2. dpkg
  3. 設定されたリポジトリから取得するパッケージ一覧・メタデータ
  4. removeは設定ファイルを一部残し、purgeはパッケージ管理対象の設定ファイルも削除する
  5. RPM系はrpm -qf ファイル、Debian系はdpkg -S ファイル
  6. -Uは未導入なら新規インストールも行い、-Fは導入済みのパッケージだけを更新する

要約

  • パッケージには、ソフトウェア本体と名前、バージョン、依存関係などのメタデータが含まれます。
  • リポジトリは、パッケージ本体とパッケージ情報を配布する保管場所です。
  • RPM系の基本ツールはrpm、上位ツールはyumdnfです。
  • Debian系の基本ツールはdpkg、上位ツールはaptです。
  • rpmdpkgは、ローカルパッケージやインストール済みデータベースを直接扱います。
  • aptyumdnfは、リポジトリを使って依存関係を解決します。
  • apt updateはパッケージ一覧を更新し、apt upgradeはインストール済みパッケージを更新します。
  • removepurgerpm -Urpm -Fの違いを区別します。
  • ファイルの所有パッケージは、RPM系ではrpm -qf、Debian系ではdpkg -Sで確認できます。
  • トラブル時は、リポジトリ設定、メタデータ、依存関係、署名、ネットワークを順番に確認します。

参考資料