Linux入門:コマンド操作のきほん
パッケージ管理
パッケージ管理 とは
Linuxでソフトウェアをインストール・アップデート・削除するためのパッケージ管理を学びます。本レッスンでは、パッケージ管理 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
Linux にソフトウェアを入れるとき、Windows のように個別の exe を落として叩くのではなく、ディストリビューションごとに用意された「パッケージ管理ツール」経由で導入するのが標準です。これによって、依存ライブラリの自動解決、署名検証、一括アップデート、削除時のクリーンアップが安全に行えます。
プロダクションサーバーや Dockerfile を書くときに「どのコマンドで何を入れるか」を理解していないと、依存が壊れて起動しない、セキュリティパッチが当たらない、イメージが肥大化するといった事故に直結します。本レッスンでは主要ディストロのパッケージ管理を横並びで押さえ、Dockerfile での実用パターンまで体系化します。
主要ディストロとパッケージマネージャ
| 系統 | ディストロ | コマンド | パッケージ形式 |
|---|---|---|---|
| Debian 系 | Ubuntu, Debian | apt (旧 apt-get) | .deb |
| Red Hat 系 | RHEL, Rocky, AlmaLinux, Fedora | dnf (旧 yum) | .rpm |
| Arch 系 | Arch Linux, Manjaro | pacman | .pkg.tar.zst |
| Alpine | Alpine Linux | apk | .apk |
| macOS | (Linux ではないが) | brew | (formula) |
クラウドサーバーで最もよく出会うのは Ubuntu (apt) と Rocky / AlmaLinux (dnf) です。Docker のベースイメージとしては Alpine (apk) と Debian-slim (apt) が二強です。
図解 パッケージ管理の役割
パッケージマネージャは公式リポジトリからメタデータと本体を取得し、ローカル DB に「入っているパッケージ」を記録しつつ、システムに配置します。アンインストール時もこの DB を見て、関連ファイルを巻き戻します。
apt の基本操作 (Ubuntu / Debian)
ターミナル
# リポジトリ情報を最新化
sudo apt update
# 入っているパッケージを最新化
sudo apt upgrade -y
# パッケージ導入
sudo apt install -y curl jq
# パッケージ検索
apt search nginx
# 入っているか確認
apt list --installed | grep nginx
# アンインストール
sudo apt remove -y nginxapt update と apt upgrade はワンセット。新規ホスト構築の最初に必ず叩きます。apt install には -y を付け、対話プロンプトを抑制するのが自動化の作法です。
dnf の基本操作 (RHEL 系)
ターミナル
sudo dnf check-update
sudo dnf upgrade -y
sudo dnf install -y curl jq
sudo dnf search nginx
sudo dnf remove -y nginx
# パッケージグループ (LAMP など) もインストール可
sudo dnf groupinstall -y "Development Tools"古い記事で yum が出てきますが、RHEL 8 以降は dnf が正で、yum は dnf へのシンボリックリンクになっています。
apk の基本操作 (Alpine)
ターミナル
apk update
apk add curl jq
apk del jq
apk search nginxAlpine は Docker イメージで使われることが多く、apk add --no-cache <pkg> のように --no-cache でキャッシュを残さずインストールしてイメージを小さく保つのが定石です。
Dockerfile では
RUN apk add --no-cache curl jqのように 1 行で複数パッケージを入れます。レイヤを分けて何度もapk addするとイメージサイズが膨らみます。
brew の基本操作 (macOS / Linuxbrew)
ターミナル
# パッケージ DB 更新
brew update
# インストール
brew install jq fzf ripgrep
# 入っているもの一覧
brew list
# アンインストール
brew uninstall fzfbrew は macOS 公式ではないですが事実上の標準で、開発ツール群を入れるのに使われます。Linux 版 (Linuxbrew) もあり、root 権限なしでツールを入れたいときに便利です。
Dockerfile での実用パターン
ターミナル
# Debian-slim (apt)
FROM debian:bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl jq ca-certificates \
&& rm -rf /var/lib/apt/lists/*要点は次の通りです。
updateとinstallは同じ RUN にまとめる (別レイヤだと古いキャッシュが残る)--no-install-recommendsで推奨依存を入れず軽量化rm -rf /var/lib/apt/lists/*で apt のキャッシュを削除しイメージを縮める- 必要なパッケージは原則 1 行で並べる
バージョン固定とロックファイル
アプリ言語のパッケージ管理 (npm, pip, gem 等) とは別に、OS パッケージにもバージョン固定の概念があります。
ターミナル
# apt で特定バージョン指定
sudo apt install -y nginx=1.24.0-2ubuntu7
# apt-mark で自動更新除外
sudo apt-mark hold nginx本番では「予期せぬ自動アップグレードでアプリが動かなくなる」事故を避けるため、明示的に hold したり、Docker image のタグを固定したりします。
本番サーバーで
apt upgradeを素朴に流すと、カーネルや依存ライブラリまで更新されてアプリが落ちる可能性があります。対象を絞ってapt install -y --only-upgrade <pkg>と書くか、Ansible のような構成管理ツールで明示管理するのが現代的です。
言語別パッケージ管理との違い
OS パッケージ管理は「OS 全体に 1 つだけ」の管理で、npm / pip / cargo のような言語別パッケージ管理とは別物です。両者を混在させない方針が安全です。たとえば Python ライブラリは OS の apt install python3-requests で入れるよりも、pip install (venv / poetry / uv 経由) で入れる方がアプリのバージョン管理が楽になります。
よくある間違い
apt updateを忘れてapt installし、古いパッケージが入る- Dockerfile で
apt installのたびにRUNを分けてレイヤが太る sudoを付け忘れて Permission denied (ローカル PC で root 権限がない場合)pip installを root 権限で全体に入れて言語環境を壊す (venv を使う)
やってみよう
このレッスンは概念中心のため演習はありません。次の練習をお勧めします。
- 手元の OS (Ubuntu / mac / Alpine) でパッケージマネージャを確認する
- 自分が普段使うツール (curl / jq / git) のバージョンを 1 行で表示するスクリプトを書く
まとめ
- Debian 系は apt、Red Hat 系は dnf、Alpine は apk、macOS は brew
- update / install / remove / search が基本動詞
- Dockerfile では update と install を 1 行にまとめ、キャッシュ削除でイメージを縮める
- 本番ではバージョン固定や apt-mark hold で予期せぬ更新を防ぐ
- 言語パッケージ (pip / npm) と OS パッケージは混ぜず、役割分担する
次のレッスン
次は cron で定期実行 で、Linuxでソフトウェアをインストール・アップデート・削除するためのパッケージ管理を学びます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- パッケージ管理 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. パッケージ管理 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン