Linuxでソフトウェアをインストールするとき、Windowsのようにインストーラーをダウンロードして実行する方法はあまり使いません。代わりに使うのがパッケージマネージャー(パッケージ管理ツール)です。
パッケージマネージャーは、ソフトウェアのインストール・更新・削除を一元管理する仕組みで、依存関係の自動解決やセキュリティアップデートの一括適用など、手作業では困難な管理を効率的に行えます。
しかし、Linuxには複数のパッケージマネージャーが存在し、使用するディストリビューションによって異なります。「aptとyumは何が違うの?」「dnfって何?」という疑問を持つ方も多いでしょう。
本記事では、主要なパッケージマネージャーであるapt、yum/dnf、pacmanの違いと使い方を、初心者向けにわかりやすく解説します。Linuxの基本についてはLinuxとは?初心者向け解説を先にご覧ください。
パッケージ管理とは
パッケージ管理の基本概念と、なぜ重要なのかを理解しましょう。
パッケージとは
パッケージとは、ソフトウェアの実行ファイル、設定ファイル、ドキュメントなどを一つにまとめたアーカイブファイルです。Windowsの「.exe」や「.msi」に相当するものと考えるとイメージしやすいでしょう。
Linuxでは主に以下の形式が使われます。
| パッケージ形式 | 拡張子 | 使用するディストリビューション |
|---|---|---|
| deb | .deb | Ubuntu、Debian |
| rpm | .rpm | CentOS、Rocky Linux、Fedora、RHEL |
| pkg.tar.zst | .pkg.tar.zst | Arch Linux |
パッケージマネージャーの役割
パッケージマネージャーは以下の機能を提供します。
- インストール:リポジトリからパッケージをダウンロードしてインストール
- 依存関係の解決:必要な関連パッケージを自動でインストール
- 更新:インストール済みパッケージを最新版にアップデート
- 削除:不要なパッケージをアンインストール
- 検索:利用可能なパッケージを検索
- 情報表示:パッケージの詳細情報を確認
リポジトリとは
リポジトリ(Repository)は、パッケージが保管されているサーバー上の倉庫のようなものです。パッケージマネージャーはリポジトリに接続してパッケージを取得します。各ディストリビューションは公式リポジトリを運営しており、安全性が検証されたソフトウェアを提供しています。
apt(Ubuntu / Debian系)
apt(Advanced Package Tool)は、UbuntuやDebian系ディストリビューションで使用される標準的なパッケージマネージャーです。中小企業のサーバーでもUbuntu Serverを採用するケースが増えており、aptの知識は実務で直結します。
基本コマンド
| 操作 | コマンド |
|---|---|
| パッケージリストの更新 | sudo apt update |
| パッケージのインストール | sudo apt install パッケージ名 |
| パッケージの削除 | sudo apt remove パッケージ名 |
| パッケージの完全削除(設定含む) | sudo apt purge パッケージ名 |
| すべてのパッケージを更新 | sudo apt upgrade |
| パッケージの検索 | apt search キーワード |
| パッケージ情報の表示 | apt show パッケージ名 |
| 不要なパッケージの削除 | sudo apt autoremove |
実践例:NginxWebサーバーのインストール
# パッケージリストを最新に更新
sudo apt update
# Nginxをインストール
sudo apt install nginx -y
# インストールされたことを確認
nginx -v
# サービスの状態を確認
sudo systemctl status nginx
Nginxの設定方法についてはNginx構築ガイドを参照してください。サービスの管理についてはsystemdサービス管理ガイドで解説しています。
セキュリティアップデートの適用
# パッケージリストの更新
sudo apt update
# セキュリティアップデートのみ適用
sudo apt upgrade -y
# 利用可能なアップデートの確認
apt list --upgradable
セキュリティアップデートの定期適用は、サーバーセキュリティの基本です。cronで自動化することも検討しましょう。
aptとapt-getの違い
以前はapt-getが標準でしたが、現在はaptコマンドに統合されています。aptはapt-getよりも出力が分かりやすく、プログレスバーも表示されます。新しいスクリプトではaptを使うことを推奨しますが、シェルスクリプト内では互換性のためapt-getを使うことも一般的です。
yum / dnf(CentOS / Rocky Linux / RHEL系)
yum(Yellowdog Updater Modified)と、その後継であるdnf(Dandified YUM)は、Red Hat系ディストリビューションで使用されるパッケージマネージャーです。
CentOS 7以前はyum、CentOS 8以降やRocky Linux、Fedoraではdnfが標準です。dnfはyumの互換性を維持しつつ、パフォーマンスと依存関係の解決能力が向上しています。
基本コマンド(dnf / yum共通)
| 操作 | コマンド |
|---|---|
| パッケージのインストール | sudo dnf install パッケージ名 |
| パッケージの削除 | sudo dnf remove パッケージ名 |
| すべてのパッケージを更新 | sudo dnf update |
| パッケージの検索 | dnf search キーワード |
| パッケージ情報の表示 | dnf info パッケージ名 |
| インストール済み一覧 | dnf list installed |
| リポジトリの一覧 | dnf repolist |
| パッケージグループの確認 | dnf group list |
実践例:開発ツールのインストール
# パッケージの更新
sudo dnf update -y
# 個別パッケージのインストール
sudo dnf install git vim wget curl -y
# 開発ツールグループのインストール
sudo dnf group install "Development Tools" -y
# 特定のパッケージがインストール済みか確認
dnf list installed | grep nginx
CentOS/Rocky Linux環境の詳細はCentOS・Rocky Linuxガイドをご覧ください。
EPELリポジトリの追加
RHEL系では、公式リポジトリに含まれないパッケージを利用するためにEPEL(Extra Packages for Enterprise Linux)リポジトリを追加することがよくあります。
# EPELリポジトリの追加
sudo dnf install epel-release -y
# EPELから提供されるパッケージの検索
dnf search --repo=epel キーワード
pacman(Arch Linux)
pacmanはArch Linuxとその派生ディストリビューション(Manjaro等)で使用されるパッケージマネージャーです。シンプルなコマンド体系が特徴です。
基本コマンド
| 操作 | コマンド |
|---|---|
| データベースの同期とシステム更新 | sudo pacman -Syu |
| パッケージのインストール | sudo pacman -S パッケージ名 |
| パッケージの削除 | sudo pacman -R パッケージ名 |
| 依存含む完全削除 | sudo pacman -Rns パッケージ名 |
| パッケージの検索 | pacman -Ss キーワード |
| パッケージ情報の表示 | pacman -Si パッケージ名 |
| インストール済みの検索 | pacman -Qs キーワード |
pacmanのフラグ体系
pacmanは大文字のフラグで操作カテゴリを指定するのが特徴です。
- -S(Sync):リポジトリとの同期・インストール
- -R(Remove):パッケージの削除
- -Q(Query):ローカルの問い合わせ
- -U(Upgrade):ローカルパッケージファイルからインストール
AUR(Arch User Repository)
Arch Linuxでは、公式リポジトリ以外にAURというユーザーコミュニティのリポジトリがあります。AURヘルパー(yayなど)を使うことで、豊富なパッケージを利用できます。
# yayによるAURパッケージのインストール
yay -S パッケージ名
3つのパッケージマネージャーの比較
日常的によく使う操作を中心に、apt・dnf・pacmanを比較します。
| 操作 | apt(Ubuntu) | dnf(Rocky) | pacman(Arch) |
|---|---|---|---|
| リスト更新 | apt update | dnf check-update | pacman -Sy |
| インストール | apt install pkg | dnf install pkg | pacman -S pkg |
| 削除 | apt remove pkg | dnf remove pkg | pacman -R pkg |
| 全体更新 | apt upgrade | dnf update | pacman -Syu |
| 検索 | apt search word | dnf search word | pacman -Ss word |
| 情報表示 | apt show pkg | dnf info pkg | pacman -Si pkg |
| 一覧表示 | apt list --installed | dnf list installed | pacman -Q |
どのパッケージマネージャーを使う場合でも、基本的な考え方は共通しています。一つを覚えれば、他のパッケージマネージャーへの切り替えもスムーズです。
パッケージ管理のベストプラクティス
パッケージ管理を安全かつ効率的に行うためのベストプラクティスを紹介します。
定期的なアップデート
セキュリティパッチを含むアップデートは定期的に適用しましょう。自動化するにはシェルスクリプトとcronを組み合わせます。
#!/bin/bash
# update.sh - パッケージの自動更新スクリプト
LOG_FILE="/var/log/auto-update.log"
echo "=== アップデート実行: $(date) ===" >> "$LOG_FILE"
sudo apt update >> "$LOG_FILE" 2>&1
sudo apt upgrade -y >> "$LOG_FILE" 2>&1
echo "=== アップデート完了: $(date) ===" >> "$LOG_FILE"
不要なパッケージの整理
使わなくなったパッケージは定期的に削除して、ディスク容量を確保しましょう。
# Ubuntu/Debian系
sudo apt autoremove -y
sudo apt clean
# CentOS/Rocky Linux系
sudo dnf autoremove -y
sudo dnf clean all
本番サーバーでの注意点
- 検証環境でテスト後に本番適用する:メジャーアップデートは検証環境で動作確認
- アップデート前にバックアップを取る:バックアップ手順を事前に整備しておく
- 不要なリポジトリは追加しない:信頼できるリポジトリのみを使用する
- 変更履歴を記録する:何をインストール・更新したかをログとして残す
コンテナ環境でのパッケージ管理
Dockerコンテナ内でもパッケージマネージャーを使用します。ベースイメージによってaptやdnfを使い分けます。コンテナ環境では不要なパッケージを含めないことが軽量化のポイントです。
# Dockerfileでの例(Ubuntu系)
RUN apt update && apt install -y \
nginx \
&& rm -rf /var/lib/apt/lists/*
まとめ
パッケージマネージャーは、Linuxでのソフトウェア管理を効率化する必須ツールです。使用するディストリビューションに応じて適切なツールを選択しましょう。
本記事のポイントを振り返ります。
- aptはUbuntu/Debian系、dnf(yum)はCentOS/Rocky Linux/RHEL系、pacmanはArch Linuxで使われる
- パッケージマネージャーはインストール・更新・削除・依存関係の解決を一括管理する
- セキュリティアップデートの定期適用は、サーバー運用の基本
- 本番環境では検証後にアップデートを適用し、バックアップを取ることが重要
- 基本的な操作概念は共通しているため、一つ覚えれば他への応用も容易
パッケージ管理の基本を理解したら、実際にUbuntuサーバーやRocky Linuxで環境構築を試してみましょう。Linuxの学習全体の流れについてはLinuxとは?初心者向け解説のロードマップを参考にしてください。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS Cost Explorerでコスト可視化|ムダを見つけて月額費用を削減する実践術
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践