目次
1. モジュール(Module)とは何か?(概念の理解)
従来のLinuxでは、リポジトリ(ソフトの保管庫)に「PHP」というソフトがあれば、バージョンは1種類に固定されていました。しかし、現在は「このサーバーには PHP 8.1 が必要だが、別のサーバーには PHP 8.3 が必要」という状況が多々あります。
この「同じソフトの複数バージョンを、ユーザーが選んでインストールできる仕組み」をモジュール(Module)と呼び、それを支えるリポジトリをAppStreamと呼びます。
2. 専門用語の整理
コマンドの結果に出てくる言葉の意味を正しく理解しましょう。
| 用語 | 意味 | 解説 |
|---|---|---|
| Name | ソフトウェア名 | postgresql, php, nodejs など。 |
| Stream | バージョン | 15, 16, 18 など。提供されるバージョンの流れ。 |
| Profiles | インストール形態 | server, client, development など。用途に合わせたセット。 |
| [d] (default) | 標準 | 指定しなかった場合に選ばれるバージョン。 |
| [e] (enabled) | 有効化中 | 現在、そのバージョンが利用可能になっている状態。 |
| [i] (installed) | インストール済み | 実際にソフトがシステムに入っている状態。 |
3. モジュールの基本操作
■ 利用可能なモジュールとバージョンを確認する
dnf module list
特定のソフト(例:postgresql)に絞って見る場合は:
dnf module list postgresql
■ 特定バージョンのインストール
インストールを行うと、その「Stream(バージョン)」が自動的に有効化(enabled)されます。
sudo dnf module install postgresql:16
4. 【重要】バージョンの切り替え手順(リセット操作)
モジュール機能の最大のルールは、「1つのソフトについて、同時に有効化できるバージョンは1つだけ」ということです。バージョンを上げたり下げたりするには、一度「リセット」する必要があります。
精査メモ:バージョン番号を現行に合わせて修正
以前の版では「PostgreSQL 10 から 15 へ」を例にしていましたが、実機で確認したところ、Stream 10 は現在のAppStreamリポジトリには存在しませんでした(現在提供されているのは 15 / 16 / 18)。実際に再現できるよう、例を 15 から 18 へ切り替える手順に修正しています。
例:PostgreSQL 15 から 18 へ切り替える場合
dnf module list postgresql
# 15 [e] [i] のようになっていることを確認
有効化されているバージョン(15)の設定を初期化します。
sudo dnf module reset postgresql
リセット後、新しいバージョンを指定してインストールします。
sudo dnf module install postgresql:18
※注:パッケージが上書き更新されますが、データベース内のデータ自体は手動で移行が必要な場合があります。
5. モジュール操作コマンド・チートシート
| やりたいこと | コマンド |
|---|---|
| 一覧表示 | dnf module list |
| 詳細情報を見る | dnf module info <name> |
| インストール | sudo dnf module install <name>:<stream> |
| 有効化(インストールせず枠組みだけ) | sudo dnf module enable <name>:<stream> |
| 無効化・初期化 | sudo dnf module reset <name> |
6. 覚えておくべき実務のポイント
- 「:(コロン)」でバージョン指定:
dnf install postgresqlだけだとデフォルト([d])が入ります。特定の版が欲しいときは必ずpostgresql:16のように書きます。 - 依存関係の自動解決:モジュールをインストールすると、そのバージョンを動かすために必要な周辺ソフトも、正しいバージョンで自動的に選ばれます。
- AppStreamの恩恵:これにより、OSのベース(BaseOS)は安定させたまま、PHPやデータベースなどの「足の速い(更新が頻繁な)」ソフトだけを最新に保つことができます。
7. 実機で確認した利用可能モジュール一覧
本サイトのRocky Linux 9サーバーで、実際に dnf module list を実行した結果です(2026年8月4日時点)。
PostgreSQL(Rocky Linux 9 - AppStream)
Name Stream Profiles Summary
postgresql 15 client, server [d] PostgreSQL server and client module
postgresql 16 client, server [d] PostgreSQL server and client module
postgresql 18 client, server [d] PostgreSQL server and client module
PHP(AppStream + Remiリポジトリ)
# Rocky Linux 9 - AppStream
php 8.1 common [d], devel, minimal
php 8.2 common [d], devel, minimal
php 8.3 common [d], devel, minimal
# Remi's Modular repository(拡張リポジトリ導入時のみ)
php remi-7.4 〜 remi-8.5(7段階のバージョンを提供)
ポイント
標準のAppStreamは8.1〜8.3までですが、Remiリポジトリを導入すると、より幅広いバージョン(7.4〜8.5)から選べるようになります。古いバージョンのアプリケーションを動かす必要がある場合に有効です。
Node.js(Rocky Linux 9 - AppStream)
Name Stream Profiles Summary
nodejs 18 common [d], development, minimal, s2i Javascript runtime
nodejs 20 common [d], development, minimal, s2i Javascript runtime
nodejs 22 common [d], development, minimal, s2i Javascript runtime
nodejs 24 common [d], development, minimal, s2i Javascript runtime
📌 まとめ:学習のゴール
- モジュール = 複数バージョンから選べる仕組み
- インストールすると、そのバージョンが「Enabled」になる
- 別のバージョンに変えたいときは、まず「Reset」が必要
この仕組みに慣れると、サーバーの要件に合わせて柔軟に環境を構築できるようになります。本ページで示した通り、実際に dnf module list postgresql や dnf module list php を実行してみると、どのようなバージョンが提供されているか具体的に確認できます。