背景:新旧プロジェクトによるバージョンの競合
Web開発やDevOpsに携わっていると、古いプロジェクトはPHP 7.4に依存し、新しいプロジェクトはPHP 8.2を要求するといった、バージョンの「板挟み」に悩まされることがよくあります。Node.jsも同様で、アプリケーションごとに異なる環境が必要です。通常、nvmを使ったり、サードパーティのリポジトリを追加したりして解決を試みますが、これらはシステム衝突のリスクを孕んでいます。
私は過去2年間、Fedoraをメインの作業マシンとして使用してきました。最も気に入っている点は、DNF Modularityです。特定のソフトウェアバージョンを1つだけ強制するのではなく、Modularityを使用すると、公式リポジトリから直接、複数のバージョン「ストリーム(streams)」を切り替えて実行できます。
「なぜDockerを使わないのか?」と思うかもしれません。実際、Modularityはdnfに深く統合されているため、圧倒的な安定性を提供します。アップグレード時のセキュリティやライブラリのエラーを心配する必要はありません。わずか3〜5分の操作で、OSの依存関係を壊すことなく、Node.js 18から20へ移行できます。
Module、Stream、Profileのクイック理解
コマンドを入力する前に、混乱を避けるためにこれら3つの中心的な概念を確認しておきましょう:
- Module: 管理したいソフトウェアの名前(例:
nodejs)。 - Stream: そのモジュールの特定のバージョン(例:18, 20, 22)。
- Profile: 用途に合わせたインストール方法。サーバー用の
commonや、デバッグツールを含むdevelopmentなどが選択可能です。
自分のマシンで何が利用可能か確認するには、次のコマンドを使用します:
dnf module list
返されるリストは非常に長くなることがあります。Node.jsなどで素早くフィルタリングするには、次のように実行します:
dnf module list nodejs
Stream列に注目してください。[d]はデフォルトバージョン、[i]はそのバージョンが既にインストールされていることを示します。
実践:瞬時にバージョンを柔軟に切り替える
1. Node.js of the handling
現在Node.js 18を使用しており、クライアントからNode.js 20を要求されたとしましょう。nodesourceからスクリプトをダウンロードする必要はありません。標準的な手順は「Reset – Enable – Install」だけです:
# ステップ 1: 古い設定を削除するためにモジュールをリセット
sudo dnf module reset nodejs
# ステップ 2: バージョン 20 のストリームを有効化
sudo dnf module enable nodejs:20
# ステップ 3: インストールまたはシステムを同期
sudo dnf install nodejs
既にNode.js 18がインストールされている場合は、sudo dnf distro-syncを実行するだけです。システムが自動的に関連パッケージを同期のためにアップグレードまたはダウングレードします。
2. Webプロジェクト向けのPHP管理
PHPはModularityの真価が最も発揮される場所です。サーバーにクリーンなPHP 8.2をインストールする場合、私はよくプロファイルを使用します:
sudo dnf module enable php:8.2
# よく使われる拡張機能をすべて含む 'common' プロファイルでインストール
sudo dnf install @php:8.2/common
@記号を使うことで、個々のライブラリ名を覚えなくてもパッケージセット全体をインストールできます。php-mbstringやphp-xmlなどを一つずつ入力する手間が省け、時間を大幅に短縮できます。
3. MariaDB:慎重に越したことはない
データベースのバージョン変更は、基盤となるデータ構造があるため、常にリスクが伴います。有効化の方法は同様です:
sudo dnf module enable mariadb:10.11
sudo dnf install mariadb-server
実体験からのアドバイス:DNFはソフトウェア(バイナリ)のアップグレードのみを行い、mysql_upgradeを自動で実行することはありません。ストリームを変更する前には、必ずmysqldumpでデータをバックアップし、「取り返しのつかない事態」を避けましょう。
確認とエラー発生時の「切り戻し」
完了したら、結果を確認しましょう。次のコマンドでアクティブなすべてのモジュールがリストされます:
dnf module list --enabled
バージョンを直接チェックして確信を得ましょう:
node -v && php -v
誤って間違ったストリームを有効にして環境を壊してしまいましたか?慌てる必要はありません。DNFには優れた履歴機能があります。次を実行するだけです:
dnf history
エラーが発生した操作のIDを見つけ、dnf history undo <ID>と入力すれば、数秒で以前の状態に「巻き戻す」ことができます。これは、私が設定をいじりすぎてしまったときによく使う救命策です。
DNF ModularityはFedoraを多機能なマシンに変え、システムをクリーンに保ちながら、プロジェクトのあらゆる厳しい要求に応えることを可能にします。スムーズな開発体験を!

