Linuxを扱う上で避けて通れないのがパッケージ管理です。ソフトウェアのインストール、更新、削除を効率的に行うためには、使用しているディストリビューションに応じた適切なパッケージマネージャーの理解が必要です。本記事では、Linuxパッケージ管理の基本概念から、主要なパッケージマネージャー(apt、yum、dnf、pacman)の具体的な使い方まで、体系的に解説します。
前提条件と実行環境
本記事のコマンドは以下の環境で動作確認しています。
| ディストリビューション | バージョン | パッケージマネージャー |
|---|---|---|
| Ubuntu | 24.04 LTS | apt |
| Debian | 12 | apt |
| AlmaLinux | 9 | dnf |
| Rocky Linux | 9 | dnf |
| CentOS Stream | 9 | dnf |
| Fedora | 41 | dnf |
| Arch Linux | 最新 | pacman |
管理者権限(root権限)が必要なコマンドにはsudoを付けて実行します。
Linuxパッケージ管理の基本概念
パッケージとは
Linuxにおけるパッケージとは、ソフトウェアを構成するファイル群(実行ファイル、設定ファイル、ライブラリ、ドキュメントなど)とメタデータ(名前、バージョン、依存関係など)をまとめたアーカイブファイルです。
パッケージには以下の情報が含まれています。
- コンパイル済みのバイナリファイル
- 設定ファイルのテンプレート
- インストール・アンインストールスクリプト
- 依存関係の定義
- ライセンス情報
リポジトリの仕組み
リポジトリ(repository)は、パッケージを配布するためのサーバーです。パッケージマネージャーはリポジトリからパッケージ情報を取得し、必要なパッケージをダウンロード・インストールします。
flowchart LR
subgraph "リポジトリサーバー"
A[パッケージデータベース]
B[パッケージファイル]
end
subgraph "ローカルシステム"
C[パッケージマネージャー]
D[ローカルDB]
E[インストール済みパッケージ]
end
A -->|メタデータ同期| D
B -->|ダウンロード| C
C -->|インストール| Eリポジトリには以下の種類があります。
- 公式リポジトリ: ディストリビューションが公式に提供するパッケージ
- サードパーティリポジトリ: 企業やコミュニティが提供する追加パッケージ
- ローカルリポジトリ: 組織内で管理するプライベートなパッケージ
依存関係の管理
パッケージは他のパッケージに依存していることが多く、この関係を「依存関係」と呼びます。パッケージマネージャーは依存関係を自動的に解決し、必要なパッケージを一括でインストールします。
flowchart TD
A[nginx] --> B[openssl]
A --> C[pcre2]
A --> D[zlib]
B --> E[glibc]
C --> E
D --> Eこの仕組みにより、手動で依存パッケージを探してインストールする必要がなくなります。
Debian系ディストリビューションのパッケージ管理
dpkgとaptの関係
Debian系(Debian、Ubuntu、Linux Mintなど)では、低レベルなパッケージ操作にdpkg、高レベルな操作にapt(またはapt-get)を使用します。
| ツール | 役割 | 依存関係解決 |
|---|---|---|
| dpkg | .debファイルの直接操作 | なし |
| apt | リポジトリからのパッケージ管理 | あり |
通常の運用ではaptを使用し、dpkgは直接ダウンロードした.debファイルをインストールする場合などに使用します。
aptの基本コマンド
パッケージリストの更新
リポジトリから最新のパッケージ情報を取得します。パッケージをインストールする前に必ず実行してください。
|
|
実行結果の例です。
|
|
パッケージの検索
インストール可能なパッケージを検索します。
|
|
より詳細な情報を表示する場合はapt showを使用します。
|
|
|
|
パッケージのインストール
パッケージをインストールします。依存関係は自動的に解決されます。
|
|
複数のパッケージを同時にインストールする場合はスペースで区切ります。
|
|
バージョンを指定してインストールする場合は以下のように記述します。
|
|
パッケージの更新
インストール済みのパッケージを最新バージョンに更新します。
|
|
より積極的な更新(不要なパッケージの削除も含む)を行う場合はfull-upgradeを使用します。
|
|
パッケージの削除
パッケージを削除します。設定ファイルは残ります。
|
|
設定ファイルも含めて完全に削除する場合はpurgeを使用します。
|
|
不要になった依存パッケージを削除する場合はautoremoveを使用します。
|
|
dpkgの基本コマンド
.debファイルを直接操作する場合に使用します。
|
|
aptリポジトリの追加
サードパーティのリポジトリを追加する場合は、GPGキーとリポジトリ情報を登録します。
|
|
RHEL系ディストリビューションのパッケージ管理
rpmとyum/dnfの関係
RHEL系(RHEL、AlmaLinux、Rocky Linux、CentOS、Fedoraなど)では、低レベルなパッケージ操作にrpm、高レベルな操作にyumまたはdnfを使用します。
| ツール | 役割 | 備考 |
|---|---|---|
| rpm | .rpmファイルの直接操作 | 依存関係解決なし |
| yum | 従来のパッケージマネージャー | RHEL 7以前で主に使用 |
| dnf | 次世代パッケージマネージャー | RHEL 8以降、Fedoraで使用 |
現在のRHEL系ディストリビューションではdnfが標準です。yumコマンドは多くの環境でdnfへのシンボリックリンクになっています。
dnfの基本コマンド
パッケージリストの更新
リポジトリのメタデータを更新します。
|
|
特定のパッケージの更新を確認する場合は以下のように記述します。
|
|
パッケージの検索
パッケージを検索します。
|
|
詳細情報を表示します。
|
|
|
|
パッケージのインストール
パッケージをインストールします。
|
|
確認プロンプトをスキップする場合は-yオプションを付けます。
|
|
パッケージの更新
システム全体を更新します。
|
|
特定のパッケージのみを更新する場合は以下のように記述します。
|
|
パッケージの削除
パッケージを削除します。
|
|
不要な依存パッケージも一緒に削除する場合はautoremoveを使用します。
|
|
パッケージグループの操作
関連するパッケージをグループとしてまとめてインストールできます。
|
|
rpmの基本コマンド
.rpmファイルを直接操作する場合に使用します。
|
|
dnfリポジトリの追加
EPELリポジトリなどの追加リポジトリを有効化する例です。
|
|
yumとdnfの互換性
yumコマンドの多くはdnfでそのまま使用できます。以下は対応表です。
| yum | dnf | 説明 |
|---|---|---|
| yum install | dnf install | パッケージのインストール |
| yum update | dnf upgrade | パッケージの更新 |
| yum remove | dnf remove | パッケージの削除 |
| yum search | dnf search | パッケージの検索 |
| yum info | dnf info | パッケージ情報の表示 |
| yum list | dnf list | パッケージ一覧の表示 |
| yum clean all | dnf clean all | キャッシュの削除 |
Arch系ディストリビューションのパッケージ管理
pacmanの特徴
Arch Linux系(Arch Linux、Manjaro、EndeavourOSなど)ではpacmanを使用します。pacmanはシンプルながら強力なパッケージマネージャーで、以下の特徴があります。
- バイナリパッケージ形式(.pkg.tar.zst)を使用
- ローリングリリースモデルに最適化
- 公式リポジトリとAUR(Arch User Repository)の2層構造
pacmanの基本コマンド
pacmanのオプションは大文字で操作の種類を指定します。
| オプション | 説明 |
|---|---|
| -S | Sync(同期) - リポジトリからの操作 |
| -R | Remove(削除) |
| -Q | Query(問い合わせ) - ローカルデータベースの操作 |
| -F | Files - ファイルデータベースの操作 |
| -U | Upgrade - ローカルパッケージのインストール |
パッケージリストの更新とシステム更新
データベースの同期とシステム全体の更新を行います。Arch Linuxでは部分的な更新は推奨されていないため、常にフルアップグレードを行います。
|
|
各オプションの意味は以下の通りです。
-S: 同期操作-y: データベースの更新-u: アップグレード
パッケージの検索
リポジトリ内のパッケージを検索します。
|
|
|
|
詳細情報を表示します。
|
|
パッケージのインストール
パッケージをインストールします。
|
|
複数のパッケージを同時にインストールできます。
|
|
パッケージの削除
パッケージを削除します。
|
|
依存関係で不要になったパッケージも一緒に削除する場合は-sオプションを追加します。
|
|
設定ファイルも含めて削除する場合は-nオプションを追加します。
|
|
インストール済みパッケージの確認
ローカルにインストールされているパッケージを操作します。
|
|
パッケージキャッシュの管理
pacmanはダウンロードしたパッケージを/var/cache/pacman/pkg/に保存します。キャッシュを管理するにはpaccacheコマンド(pacman-contribパッケージ)を使用します。
|
|
AUR(Arch User Repository)の活用
AURはコミュニティが管理するパッケージリポジトリです。公式リポジトリにないソフトウェアを入手できますが、公式サポートはありません。
AURからパッケージをインストールするには、AURヘルパー(yay、paruなど)を使用するのが一般的です。
|
|
各パッケージマネージャーのコマンド比較
主要なパッケージマネージャーのコマンド対応表です。
| 操作 | apt | dnf | pacman |
|---|---|---|---|
| DB更新 | apt update | dnf check-update | pacman -Sy |
| システム更新 | apt upgrade | dnf upgrade | pacman -Syu |
| インストール | apt install pkg | dnf install pkg | pacman -S pkg |
| 削除 | apt remove pkg | dnf remove pkg | pacman -R pkg |
| 検索 | apt search pkg | dnf search pkg | pacman -Ss pkg |
| 情報表示 | apt show pkg | dnf info pkg | pacman -Si pkg |
| ファイル検索 | dpkg -S file | rpm -qf file | pacman -Qo file |
| キャッシュ削除 | apt clean | dnf clean all | pacman -Sc |
| 不要パッケージ削除 | apt autoremove | dnf autoremove | pacman -Rns $(pacman -Qdtq) |
実践的なパッケージ管理のベストプラクティス
定期的なシステム更新
セキュリティパッチを適用するため、定期的にシステムを更新してください。
|
|
不要パッケージの削除
ディスク容量を節約し、システムをクリーンに保ちます。
|
|
パッケージのロック(更新除外)
特定のパッケージを更新対象から除外する方法です。
|
|
トラブルシューティング
パッケージ管理で問題が発生した場合の対処法です。
依存関係の問題
|
|
キャッシュの破損
|
|
まとめ
Linuxパッケージ管理は、ディストリビューションによって使用するツールが異なりますが、基本的な概念(リポジトリ、依存関係、パッケージのライフサイクル)は共通しています。
本記事で解説したポイントをまとめます。
- Debian系: apt/dpkgを使用。aptは依存関係を自動解決する高レベルツール
- RHEL系: dnf(旧yum)/rpmを使用。dnfは現在の標準パッケージマネージャー
- Arch系: pacmanを使用。シンプルなオプション体系とローリングリリースに最適化
使用しているディストリビューションに応じたパッケージマネージャーを適切に使いこなすことで、システム管理の効率が大幅に向上します。