RHEL8サーバへのパッケージ導入のため、ローカルにdnf(yum)リポジトリを作成したときの失敗談。
とりあえず結論、というか注意点だけ先に書いておくと、
「createrepo_c コマンドで作成された RHEL8 のリポジトリーミラーは、モジュール情報を正しく処理しません。」
つまりRHEL8で下手に createrepo_c を使ったら面倒なことになるので注意、というお話です。
リポジトリサーバにて createrepo_c コマンドでメタデータを作成した後、
お目当てのサーバで、下記のようにインストールを実行した。
dnf install javapackages-filesystem
すると、見慣れないエラーが出る。
CRITICAL モジュラーパッケージ 'javapackages-filesystem-5.3.0-1.module+el8+2447+6f56d9a6.noarch' のモジュラーメタデータは利用不可です、システムにインストールはできません
(合わせて右記も出力された「No available modular metadata for modular package」)
よくわからないが、どうやら新しく導入された概念(Modularity)が関係しているようだ。
RHEL 8/Fedora 28で導入されたModularity
https://rheb.hatenablog.com/entry/201812-modularity
上記の記事を参考に、createrepo したディレクトリを見てみると、
どうやら下記が存在していないといけないようだが、ない。
modules.yaml.gz
調べてみたところ、下記の「既知の問題」の影響で、createrepo_c コマンド実行時に削除されてしまった模様。
https://access.redhat.com/ja/solutions/6319191
上記記事の解決法ではキャッシュから作成しているが、今回はRHEL8のメディアから対象ファイルを復元。
無事エラーが解消し、パッケージ導入成功!