第5章: パッケージ管理とソフトウェアのインストール
5.1 この章で解説する主要な技術・概念
AlmaLinux 9におけるパッケージ管理は、システムの安定性とセキュリティを保つための必須要素です。本章では、RHEL系ディストリビューションで標準採用されているDNF (Dandified Yum) を中心に、リポジトリ管理やモジュールストリーム、EPELなどをより詳しく解説し、効率的にソフトウェアを導入・更新するためのベストプラクティスを学びます。
- DNFパッケージマネージャーの詳細
- 依存関係の解決メカニズム
- よく使うサブコマンドとオプション
- リポジトリ管理 (EPEL、AppStream、extras など)
- EPELリポジトリの活用
- 有効/無効化とgpgキーの取り扱い
- モジュールストリーム (Module Streams)
- 複数バージョンの共存(PHP、Node.js などの例)
- モジュールのenable/disable/reset
- パッケージの署名とGPGキー管理
- セキュリティと改ざん防止の仕組み
- ローカルリポジトリとオフライン環境
- createrepoコマンドを使った独自リポジトリの作成
- DVD ISOを使ったネットワークレス運用
- 自動アップデートとdnf-automatic
- 定期的なセキュリティパッチの適用
- システム管理の効率化
5.2 DNFパッケージマネージャーの詳細
5.2.1 DNFの特徴
- 高速な依存関係の解決: 従来のyumよりメタデータ処理が効率化され、パッケージ操作が軽快
- プラグイン構造: dnf-plugins-core を導入することでCOPRレポジトリ対応やバージョンロックなど拡張機能が容易
- 互換性: CentOSやRHELの時代からの
yum
コマンドがラッパーとして存在する場合もあり、スクリプト互換性をある程度確保
5.2.2 DNFの主なサブコマンド
1. パッケージ検索
sudo dnf search nginx
sudo dnf list nginx
search
はパッケージ名と概要で検索list
はパッケージのインストール可否やバージョンを表示
2. インストール・更新・削除
# インストール
sudo dnf install httpd
# 更新(特定パッケージまたは全体)
sudo dnf update
sudo dnf update nginx
# 削除
sudo dnf remove httpd
update
はインストール済みパッケージの更新。dnf upgrade
でも同様の動作
3. 情報確認
# パッケージの詳細情報
sudo dnf info php
4. 依存関係の確認
# インストールによってどんな依存関係が入るのかを表示
sudo dnf install --assumeno nginx
--assumeno
オプションで実際にはインストールせず、依存関係だけを確認
5. クリーンアップ
# メタデータキャッシュや古いパッケージをクリア
sudo dnf clean all
sudo dnf autoremove
autoremove
は不要になった依存パッケージを自動的に削除
5.3 リポジトリ管理
5.3.1 AlmaLinux標準リポジトリ
- BaseOS: OSの基本機能やコアパッケージ
- AppStream: 追加のアプリケーションやモジュールストリームを提供
- extras: AlmaLinuxやコミュニティが提供する追加パッケージ(EPELリポジトリインストーラなど)
5.3.2 EPELリポジトリの活用
EPEL (Extra Packages for Enterprise Linux)
Fedoraプロジェクトが管理し、RHEL系ディストリビューション向けに多数のパッケージを提供するリポジトリ。
sudo dnf install epel-release
sudo dnf repolist
epel-release
パッケージを導入すると、/etc/yum.repos.d/epel.repo が配置されるdnf search htop
などで、標準リポジトリにないパッケージが見つかる場合がある
5.3.3 リポジトリの有効/無効化
dnf config-manager
コマンドを使うと、特定リポジトリを有効・無効に切り替え可能。
sudo dnf install dnf-plugins-core
# epelリポジトリを無効化
sudo dnf config-manager --set-disabled epel
# 再度有効化
sudo dnf config-manager --set-enabled epel
gpgキーの取り扱い
初回インストール時、以下のようなメッセージが表示されることがある:
Importing GPG key 0x... "AlmaLinux ... GPG key"...
Is this ok [y/N]:
- これはパッケージの改ざんを防ぐための署名。公式のリポジトリかどうかを確認してから
y
で承認する。
5.4 モジュールストリーム (Module Streams)
5.4.1 モジュールストリームの基本
Red Hat系ディストリビューションでは、同じソフトウェアを複数バージョン同時にサポートするためにモジュールストリームという仕組みが導入されています。例えばPHPやNode.jsなどでは、バージョン7.4/8.0/8.1などを同時に利用可能。
5.4.2 基本コマンド
# 利用可能なモジュールの一覧
sudo dnf module list
# モジュールの有効化 (例: PHP 7.4)
sudo dnf module enable php:7.4
# インストール
sudo dnf module install php:7.4
# モジュールのリセット (有効化を解除)
sudo dnf module reset php
enableとinstallの違い
- enable: そのモジュールストリームを使う「準備」をする(優先バージョンを決める)
- install: 実際にそのモジュール内のパッケージを導入する
5.4.3 注意点
- 異なるバージョンのストリームを同時に有効化できない場合が多い
- モジュールを一度enableすると、他バージョンへの切り替えには
dnf module reset
が必要 - AppStreamリポジトリを無効化したり、別のリポジトリと混在させる場合は競合が起きる可能性がある
5.5 パッケージの署名とGPGキー管理
5.5.1 GPGキーによる改ざん防止
パッケージ署名
ソフトウェアが配布される過程で改ざんされていないかを検証する仕組み。各リポジトリは独自のGPGキーで署名し、インストール時にそのキーで署名を検証する。
- rpmコマンドで署名確認:
rpm -K mypackage.rpm
md5 gpg OK
などが表示されれば整合性あり。
5.5.2 gpgcheck 設定
/etc/yum.repos.d/*.repo ファイル内で、gpgcheck=1
が指定されていれば、パッケージ署名を必ず検証する。gpgkey=
でキーのURLやファイルパスを指定。
[baseos]
name=AlmaLinux $releasever - BaseOS
...
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux
5.6 ローカルリポジトリとオフライン環境
5.6.1 createrepoによる独自リポジトリ作成
大規模企業やセキュリティの高いネットワークセグメントでは、インターネットから切り離されたオフラインリポジトリを運用するケースがある。
- 必要なパッケージをダウンロードし、ディレクトリに格納
createrepo
コマンドでリポジトリメタデータを生成
sudo dnf install createrepo
createrepo /path/to/localrepo
- /etc/yum.repos.d/local.repo を作成:
[localrepo]
name=Local Repository
baseurl=file:///path/to/localrepo
enabled=1
gpgcheck=0
sudo dnf clean all
後sudo dnf repolist
で確認
5.6.2 DVD ISOを使ったインストールメディア
- ISOイメージをマウントし、その中に含まれる
BaseOS
やAppStream
をローカルリポジトリとして利用可能。 /etc/fstab
にloop
オプションでISOをマウントすれば再起動後も継続可能。
sudo mount -o loop AlmaLinux-9.0-dvd.iso /mnt
[DVD-BaseOS]
name=AlmaLinux DVD BaseOS
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
5.7 自動アップデートとdnf-automatic
5.7.1 セキュリティアップデートの重要性
Linuxサーバーは日々新たな脆弱性が発見されるため、セキュリティパッチの適用が欠かせない。未適用のままだと攻撃者に容易に侵入されるリスクが高まる。
5.7.2 dnf-automatic の活用
dnf-automatic
指定した時間にパッケージを自動更新する仕組みを提供するパッケージ。
バグフィックスやセキュリティパッチをすぐに反映しやすくなるが、重大な変更が自動適用されるリスクもあるため、慎重な運用が必要。
sudo dnf install dnf-automatic
- /etc/dnf/automatic.conf で動作を設定
[commands]
upgrade_type = security
random_sleep = 30
system_name = my-almalinux-server
[emitters]
system_name = my-almalinux emit_via = email
[email]
email_from = root@mydomain email_to = admin@mydomain smtp_server = localhost
- systemd timer を有効化
sudo systemctl enable dnf-automatic.timer
sudo systemctl start dnf-automatic.timer
- 毎日特定時間に更新をチェックし、結果をメールで通知したり、セキュリティアップデートだけ自動的に適用したりできる。
5.8 学習のまとめ
- DNFの詳細: 依存関係の自動解決と高速化が図られた次世代パッケージマネージャー。
install
,update
,remove
,search
などの基本コマンドを使いこなすと、アプリケーション管理が容易になる。 - リポジトリ管理: EPELやAppStream、extrasなどのリポジトリを適切に使い分け、gpgキーを検証してセキュアに運用。
dnf config-manager
で有効/無効を柔軟に切り替えられる。 - モジュールストリーム: 同一ソフトウェアの複数バージョンを共存できる仕組み。
dnf module list
,enable
,install
,reset
などの操作を理解し、PHPやNode.jsなどをプロジェクト単位で使い分ける。 - GPG署名と改ざん防止: リポジトリからダウンロードしたパッケージに対し、署名を検証することでセキュリティを確保。
- ローカルリポジトリとオフライン環境: createrepoでメタデータを生成し、自社内に限定したパッケージ配布が可能。DVD ISOもローカルリポジトリとして利用できる。
- 自動アップデート:
dnf-automatic
の導入で定期的な更新を実施し、セキュリティ脆弱性への対処を迅速化。ただし本番環境では大幅な変更が自動適用されないよう注意深い設定が必要。
次章へのつながり
次の章(第6章)では、Linuxサーバーのファイルシステムとストレージ管理をさらに深堀りします。ディスクのパーティショニング、LVMやRAIDの活用、fstabの設定などを学び、安定したストレージ環境を構築するスキルを身につけましょう。