RHEL 8 あるいは Fedora 28 のモジュールについて
Red Hat Enterprise Linux 8 Beta がリリースされたようです。さっそくリリースノート読んでみると、RHEL 8 は Fedora 28 がベースになっているようです。さらにリリースノートを読んでいくと、気になる項目が記載されていました。モジュールです。
モジュールとは
Fedora の資料ですが、モジュールについては以下のドキュメントがありました。
https://docs.fedoraproject.org/en-US/modularity/
ざっくり言うと、システム管理者が望むような、最新バージョンよりは長年安定している少し古いバージョンを使いたい、という要望に応えるもののようです。例えば、Fedora 28 で PostgreSQL を入れようとしたら 10 が降ってきますが、これを互換性等の理由で 9.6 を入れられるようにするという代物だそうです。
使い方
以降、Fedora 28 での操作例です。RHEL 8 でも多分大きく変わらないと思います。
使えるモジュールのリストは dnf module list
で確認できます。
# dnf module list Fedora Modular 28 - x86_64 Name Stream Version Profiles reviewboard 2.5 [d] 20180206144254 default, server Fedora Modular 28 - x86_64 - Updates Name Stream Version Profiles ant 1.10 20180629154141 default avocado latest 20181004173516 default, minimal byteman byteman 20180711142551 default container-tools 2017.0 20180313063358 default cri-o 2017.0 20180313134242 default django 1.6 20180409143454 default, python2_development docker 2017.0 20180314032736 default dwm 6.0 20180813144159 default, user dwm 6.1 20180813122714 default, user dwm latest 20180814184656 default, user flatpak-runtime f28 20180307202408 buildroot, runtime, ... gcsf master [d] 20180730063540 default ghc 8.4 20180930092756 default, minimal, ... gimp 2.10 20180824144949 default, devel golang 1.10 20180327174614 default golang-ecosystem 2017.0 20180312141905 default hub pre-release 20180613180542 default libgit2 0.26 [d] 20181103165214 libgit2 0.27 20181028172505 lizardfs devel 20180810084334 mariadb 10.1 20180419160707 client, default, ... maven 3.5 20180629153919 default mongodb 3.6 20180601084133 client, default, ... mysql 5.6 20180507203856 client, default, ... mysql 8.0 20180507133324 client, default, ... nodejs 10 20181011185441 default, development, ... nodejs 6 20180816121924 default, development, ... nodejs 8 20180816123422 default, development, ... nodejs 9 20180614205456 default, development, ... postgresql 9.6 20180429200004 client, default, ... reviewboard 3.0 20180607124319 default, server ripgrep latest 20181104174352 default ripgrep master [d] 20180726145207 default scala 2.10 20180702155503 default squid 4.0 20180604145326 default stratis 1 [d] 20181103101935 default stratis master 20180726133047 default Hint: [d]efault, [e]nabled, [i]nstalled, [l]ocked
ここで、先の例のように PostgreSQL を入れようとしたら、10 が降ってきます。
# dnf install postgresql : ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: postgresql x86_64 10.6-1.fc28 updates 1.5 M Installing dependencies: postgresql-libs x86_64 10.6-1.fc28 updates 301 k :
このとき、PostgreSQL 9.6 を入れたい場合、以下のようにすると 9.6 が降ってきます。
# dnf install @postgresql:9.6 ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing module packages: postgresql-server x86_64 9.6.8-1.module_1710+abca667b updates-modular 4.6 M Installing dependencies: postgresql x86_64 9.6.8-1.module_1710+abca667b updates-modular 1.3 M postgresql-libs x86_64 9.6.8-1.module_1710+abca667b updates-modular 249 k
プロファイル
各モジュールには、用途に応じたプロファイルも用意されているようです。dnf module list
で出てくる Profiles
の欄ですね。先の PostgreSQL だと、client
プロファイルというのがいるようです。client
プロファイルだと、postgresql-server
パッケージはインストールされないというように、用途がきっちり分かれていますね。
# dnf install @postgresql:9.6/client ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing module packages: postgresql x86_64 9.6.8-1.module_1710+abca667b updates-modular 1.3 M Installing dependencies: postgresql-libs x86_64 9.6.8-1.module_1710+abca667b updates-modular 249 k