Linuxパッケージ管理
パッケージ管理とは
パッケージ管理は、ソフトウェアのインストール・更新・削除を一元的に行う仕組みです。[[Linux]] ではソフトを「パッケージ」という単位で配布し、パッケージマネージャというツールで管理します。
最大の利点は依存関係の自動解決です。あるソフトが動くのに必要な別のライブラリ(依存パッケージ)を、パッケージマネージャが自動で見つけてまとめてインストールしてくれます。手作業で1つずつ集める必要はありません。
二大系統 — aptとdnf
パッケージマネージャはディストリビューションの系統ごとに異なります。
| Debian 系 | Red Hat 系 | |
|---|---|---|
| ディストリビューション | Ubuntu、Debian | RHEL、Rocky Linux、Fedora |
| コマンド | apt | dnf(旧 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 が行います。