目次
- パッケージ管理とは
- パッケージとは
- パッケージマネージャーの役割
- リポジトリとは
- apt(Ubuntu / Debian系)
- 基本コマンド
- 実践例:NginxWebサーバーのインストール
- セキュリティアップデートの適用
- aptとapt-getの違い
- yum / dnf(CentOS / Rocky Linux / RHEL系)
- 基本コマンド(dnf / yum共通)
- 実践例:開発ツールのインストール
- EPELリポジトリの追加
- pacman(Arch Linux)
- 基本コマンド
- pacmanのフラグ体系
- AUR(Arch User Repository)
- 3つのパッケージマネージャーの比較
- パッケージ管理のベストプラクティス
- 定期的なアップデート
- 不要なパッケージの整理
- 本番サーバーでの注意点
- コンテナ環境でのパッケージ管理
- まとめ
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とは?初心者向け解説のロードマップを参考にしてください。
先行モニター企業 募集中|先着5社・2026年11月末まで 生成AIの利用費、「誰が・何のために・いくら」まで見えていますか?
株式会社カイダンと共同開発したAI利用ガバナンスSaaS「ManageAI」は、OpenAI・Azure OpenAI・Claude・AWS Bedrock・Google Vertex AIの費用と利用状況を、部署・利用者・プロジェクト別に可視化します。導入は読み取り専用キーの登録だけ。初期費用0円・月額5万円(税別)で先行モニター企業を募集しています。
ニュースリリースを読む関連記事
Related / 9 articles
Notes & Insights
- プログラミング
DDoS攻撃の仕組みと対策入門|レイヤー別の防御とCDN・クラウドの活用
DDoS攻撃をボリューム型・プロトコル型・アプリ層に分けて仕組みを解説し、自前サーバーで防げない理由、CloudflareやAWS Shieldの標準防御、オリジンIPの隠し方、レートリミットとBot対策、攻撃を受けたときの初動、費用が跳ね上がるDenial of Walletへの備えまでわかります。
- プログラミング
WAFとは?仕組み・導入パターン・誤検知対策|Webアプリを攻撃から守る実践ガイド
WAFがファイアウォールやIDSと何が違うのか、シグネチャとマネージドルールの仕組み、Cloudflare WAF・AWS WAF・ModSecurityの比較、フォーム送信がブロックされる誤検知の調査と例外設定、ログ監視、WAFが代替できないことまで実践的に解説します。
- プログラミング
セキュリティヘッダー入門|CSP・HSTS・X-Frame-Optionsの設定と効果を実践解説
CSP・HSTS・X-Frame-Options・X-Content-Type-Optionsなど主要セキュリティヘッダーが防ぐ攻撃と、CSPのReport-Onlyからの段階導入、nonce/hash、HSTS preloadの不可逆リスク、Nginx・Next.js・Astroでの設定例、確認方法を解説します。
- プログラミング
クラウドの通信費(Egress)入門|データ転送量課金の仕組みと転送コストを抑える設計
クラウドの「受信無料・送信有料」の原則、AZ間・リージョン間・インターネット向けの単価差、NATゲートウェイ処理料の罠、CDNで転送量を減らす方法、バックアップやログ転送の見落とし、請求書で転送料を特定する手順を解説。想定外の請求を防げます。
- プログラミング
秘密情報をGitに入れない仕組み|.gitignore・git-secrets・履歴から漏れた鍵の削除
APIキーや.envをGitにコミットしてしまう典型経路と、.gitignore・.env.exampleの運用、pre-commitでのgitleaks検知、GitHub secret scanningの活用、漏れた鍵の無効化と履歴書き換え(git filter-repo)の手順を解説。仕組みで再発を防げます。
- プログラミング
開発・ステージング・本番環境の分離設計|環境差分をなくす構成とアクセス制御
開発・ステージング・本番それぞれの目的と、構成をコードで揃える方法、環境別の設定注入、本番データを使わないテストデータ戦略、ステージングの保護(Basic認証・IP制限・noindex)、コストを抑える運用までを解説。環境差分による本番障害を防げます。
- プログラミング
ngrok・Cloudflare Tunnelでローカルを公開|Webhook開発とデモ環境の作り方
NAT内のローカル環境にStripeやLINEのWebhookを届けるトンネリングの仕組みを解説。ngrok・Cloudflare Tunnel・localtunnelの比較、固定ドメインと認証、リクエスト検査、公開時のセキュリティ、自宅サーバー公開への応用までわかります。
- プログラミング
ローカル開発環境のHTTPS化|mkcert・hostsファイル・自己署名証明書の正しい使い方
ローカル開発をHTTPS前提にすべき理由(Secure Cookie・Service Worker・OAuth)と、mkcertでローカルCAを作りhostsで独自ドメインを割り当ててVite・Next.js・Dockerで使う手順を解説。証明書警告を無視する癖の危険も理解できます。
- プログラミング
localhost・0.0.0.0・127.0.0.1の違い|ポートとUnixソケットを理解して「つながらない」を解決
localhost・127.0.0.1・0.0.0.0の意味の違い、Dockerで外から接続できない原因、host.docker.internal、ポート競合の調べ方、Unixソケットの利点と権限、1024未満ポートの制約を解説。「つながらない」を仕組みから解決できます。
先行モニター企業 募集中
生成AIのコストを「部署別」に、請求書より先に。
先着5社限定・2026年11月末まで。初期費用0円・月額5万円(税別)で、正式版と同等の機能に加え、開発者と伴走者による導入支援を追加費用なしで提供します。プロンプト原文は一切取得しません。
株式会社カイダン × Harmonic Society株式会社の共同事業|読み取り専用キーの登録だけで導入できます