CentOS7では、パッケージのバージョン管理を行う方法はありませんでした。
このため新しいバージョンのパッケージをインストールするには既存のリポジトリを無効化したり、既存のリポジトリに入っているパッケージとは別の名前のパッケージで登録したりと面倒でした。
しかしCentOS8にはモジュールという機能が追加され、バージョンを選んでインストールをすることが出来ます。
また、CentOS8のリポジトリに存在しないバージョンを別のリポジトリからインストールする場合も、そのリポジトリがモジュール機能に対応していれば同じようにバージョンを選ぶ事が出来ます。
今回はnginxを例にとってモジュールの簡単な使い方を説明したいと思います。
この記事で行うこと
1. 事前準備
今回は複数のリポジトリからバージョンを選べることを確認するために、EPELリポジトリを事前にインストールします。
[root@localhost ~]# dnf install epel-release
2. モジュールのコマンド
モジュールに関する操作の際には dnf module
コマンドを用います。(dnfコマンド内のmoduleコマンドですね)
2-1. list
存在するモジュールの一覧を表示します。
[root@localhost ~]# dnf module list [モジュール名]
ちなみに、[探したいモジュール名]を空欄にすると、全てのモジュールとバージョンの一覧が表示されます。多分使うことはほぼないです。
nginxのモジュールを対象に実行した結果が以下となります。
[root@localhost ~]# dnf module list nginx
CentOS-8 - AppStream
Name Stream Profiles Summary
nginx 1.14 [d] common [d] nginx webserver
nginx 1.16 common [d] nginx webserver
Extra Packages for Enterprise Linux Modular 8 - x86_64
Name Stream Profiles Summary
nginx mainline [e] common [i] nginx webserver
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Stream
列がバージョンを表しています。
AppStreamリポジトリにバージョン1.14と1.16、EPEL(Extra Packages for Enterprise Linux)リポジトリにmainlineというバージョンが存在することが分かると思います。
また、Profiles
列は開発版などの細かい区分けを表します。nginxにはcommon(通常版)しかないようです。
Stream
や Profiles
の隣にある括弧内のアルファベットは実行結果下部のヒントにあるようにそのバージョンをどのような状態にしているかを表しています。
今回の内容では、EPELリポジトリのmainlineバージョンが有効で、その通常版がインストールされているという事が分かります。
defaultというのは、特に指定せずにインストールしようとするとそのバージョンがインストールされるということです。
nginxを何の指定も無しにインストール使用とするとバージョン1.14の通常版がインストールされます。
2-2. install
モジュールの特定のバージョンをインストールしたい場合は以下のコマンドとなります。
[root@localhost ~]# dnf module install [Name]:[Stream]/[Profile]
[]内のName、Stream、Profileはそれぞれ先程の list
コマンドで確認した同名の項目を入れてください。
ちなみに、StreamとProfileは省略すると自動的にdefault指定されている物が選択されます。
ただしdefault指定されている物が無いとエラーとなりますし、誤って望んでいたのとは違う物を入れてしまう可能性があるため、全て指定することをオススメします。
2-3. remove
モジュールをアンインストールしたい場合は以下のコマンドとなります。
[root@localhost ~]# dnf module remove [Name]
同時にインストールできるバージョン・プロファイルは1つだけなので、削除する際にはバージョンやプロファイルを指定する必要はありません。
2-4. reset
モジュールのバージョンを切り替えたい場合は以下のコマンドで一旦バージョン選択をリセットする必要があります。
[root@localhost ~]# dnf module reset [Name]
ちなみに、リセットしてもインストールしたファイルは消されず、再度同じバージョンをインストールしようとすると紐付けることができます。
なので、綺麗に消したい際には先に remove
でアンインストールしてからリセットしましょう。
まとめ
今回はモジュールの使い方について説明しました。
モジュールを使えばソフトウェアのバージョン管理が楽になるので、モジュールがあるリポジトリを使う際にはモジュールを優先的に使うのがオススメです。