Linuxパッケージ管理

パッケージ管理とは

パッケージ管理は、ソフトウェアのインストール・更新・削除を一元的に行う仕組みです。[[Linux]] ではソフトを「パッケージ」という単位で配布し、パッケージマネージャというツールで管理します。

最大の利点は依存関係の自動解決です。あるソフトが動くのに必要な別のライブラリ(依存パッケージ)を、パッケージマネージャが自動で見つけてまとめてインストールしてくれます。手作業で1つずつ集める必要はありません。

二大系統 — aptとdnf

パッケージマネージャはディストリビューションの系統ごとに異なります。

Debian 系Red Hat 系
ディストリビューションUbuntu、DebianRHEL、Rocky Linux、Fedora
コマンドaptdnf(旧 yum)
パッケージ形式.deb.rpm

[[シェルとコマンドライン]] からの基本操作は次のとおりです(Ubuntu の例)。

sudo apt update            # パッケージ一覧(カタログ)を最新化
sudo apt install nginx     # インストール
sudo apt upgrade           # 導入済みパッケージを一括更新
sudo apt remove nginx      # 削除
apt search nginx           # 検索

apt update は「ソフト自体の更新」ではなく「リポジトリのカタログ情報の更新」である点がつまずきポイントです。install や upgrade の前にまず update、が基本の流れです。

リポジトリという仕組み

パッケージの配布元をリポジトリと呼びます。パッケージマネージャは、登録されたリポジトリ(公式サーバー)からパッケージを取得します。

  • 公式リポジトリのパッケージは動作確認・署名検証済みで安全性が高い
  • 公式にない新しいソフトは、提供元のリポジトリを追加して導入することもある
  • 出所不明のパッケージ追加はセキュリティリスク — 提供元の信頼性を必ず確認する

この「リポジトリから依存関係ごと取得する」仕組みは、[[npmとパッケージ管理]] など各言語のパッケージ管理とも共通する考え方です。

初学者向けポイント

  • セキュリティ更新の適用(apt upgrade)はサーバー運用の基本作業。放置は脆弱性の温床になる
  • 「どの系統のディストリビューションか」でコマンドが変わる — 現場のサーバーがどちら系かをまず確認する癖をつける
  • 大量のサーバーへの一括適用は [[Ansibleと構成管理]] などの自動化ツールと組み合わせるのが実務の定番

関連技術とのつながり

  • [[Linux]] — パッケージ管理はディストリビューションの個性が出る部分
  • [[シェルとコマンドライン]] — apt や dnf はシェルから操作する
  • [[npmとパッケージ管理]] — 依存解決・リポジトリという考え方は言語系パッケージ管理と共通
  • [[Ansibleと構成管理]] — 多数のサーバーへのパッケージ適用を自動化できる
Q: パッケージマネージャの「依存関係の自動解決」とはどれ?
- [x] 必要な別のライブラリを自動で見つけてまとめてインストールすること
- [ ] ソフトの不具合を自動で修正すること
- [ ] ネットワークの経路を自動で切り替えること
解説: ソフトの動作に必要な依存パッケージを自動で導入してくれるのが、パッケージ管理の最大の利点です。

Q: Ubuntu で使われるパッケージマネージャはどれ?
- [ ] dnf
- [x] apt
- [ ] rpm形式のみを直接ダウンロードする
解説: Debian 系の Ubuntu は apt を使います。dnf は RHEL などの Red Hat 系のコマンドです。

Q: apt update が行うことはどれ?
- [ ] 導入済みのソフトをすべて最新版に入れ替える
- [x] リポジトリのパッケージ一覧(カタログ情報)を最新化する
- [ ] 不要なパッケージを削除する
解説: apt update はカタログ情報の更新で、ソフト自体の一括更新は apt upgrade が行います。