1
1

More than 1 year has passed since last update.

ローカルリポジトリからインストールした際、Ruby関連ファイルのみ「モジュールメタデータは利用不可です」と表示された件

Posted at

オフライン環境のRHEL8.4にパッケージ導入時したときの話。

環境

OS:RHEL8.4
オンライン環境:Aサーバ
オフライン環境:Bサーバ
※ともにGUIインストールしただけの状態。

初めに

AサーバにてRPMパッケージを、Ruby含めざっくり90ファイルほどダウンロードしてローカルレポジトリを作成。
作成したリポジトリをzip圧縮してBサーバに展開。

/etc/yum.repos.d/にrepoファイルを作成後、dnf repolistに登録がある事を確認。
ターミナルから下記コマンドを実行

dnf --disablerepo=* --enablerepo=***_repo install [パッケージ名]

下記のようなエラーが出でました。
※見やすいようにエラーMSGは成形してます。

モジュラーパッケージ 'ruby-2.5.9-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'ruby-irb-2.5.9-107.module+el8.4.0+10822+fe4fffb1.noarch' のモジュラーメタデータは利用不です
モジュラーパッケージ 'ruby-libs-2.5.9-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'rubygem-bigdecimal-1.3.4-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'rubygem-did_you_mean-1.2.0-107.module+el8.4.0+10822+fe4fffb1.noarch' のモジュラーメタデー
モジュラーパッケージ 'rubygem-io-console-0.4.6-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータはデータは利用不可です
モジュラーパッケージ 'rubygem-json-2.1.0-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'rubygem-openssl-2.1.2-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'rubygem-psych-3.0.2-107.module+el8.4.0+10822+fe4fffb1.x86_64' のモジュラーメタデータは利用不可です
モジュラーパッケージ 'rubygem-rdoc-6.0.1.1-107.module+el8.4.0+10822+fe4fffb1.noarch' のモジュラーメタデータはデータは利用不可です
モジュラーパッケージ 'rubygems-2.7.6.3-107.module+el8.4.0+10822+fe4fffb1.noarch' のモジュラーメタデータは利用不可です

原因

RHEL8のmodule管理にメタデータが含まれていて、リポジトリ作成時にはひと手間かかる、メタデータはYAML形式のファイルで作成される。また主にRuby関連ファイルのみメッセージが発生している。

参考サイト

調べたところ

ruby-2.5.9-107はRHEL8.4でデフォルトインストールされるバージョンと判明、
そのほかのRuby関連ファイルもインストール時に一緒に導入されるものとわかる。

なぜRubyのみエラーとなるのかまでは調べておりません。
どなたか教えてくださいませ。。。

調査時に利用したコマンド

dnf module list ruby
dnf module install ruby:2.5/common

そこで

ruby関連ファイルでエラーとなっているので先にRubyをインストールし、後にパッケージ関連をインストールする作戦に変更

実際にはAサーバで下記手順を実行

Aサーバ作業

dnf install modulemd-tools

mkdir -p ruby_repo/Packages
cd /usr/local/src/ruby_repo/Packages
dnf download --resolve ruby
cd ..
ls
Packages

#Packagesフォルダがある階層でcreaterepo_cを実行
createrepo_c .

#メタデータ作成
repo2module  -s stable  . modules.yaml

modules.yamlに追記
data:
  arch: x86_64
profiles:
  default:
      description: ruby  package

#modules.yamlの情報をrepodataに追加
modifyrepo_c --mdtype=modules modules.yaml repodata/

ls repodata/ | grep modules
→*****modules.yaml.gzファイルがあることを確認する

あとはレポジトリのフォルダをzip圧縮。zipファイルをBサーバの適切なフォルダに持っていきunzip.

Bサーバ作業

/etc/yum.repos.d/ruby_repo.repoファイルを作成

vim /etc/yum.repos.d/ruby_repo.repo

[ruby_repo]
name=RubyRepo
baseurl=file:///usr/local/src/ruby_repo
enabled=1
gpgcheck=0

dnf repolistを実行してrepolistに表示があることを確認

#レポジトリを指定してインストール
dnf --disablerepo=* --enablerepo=ha_repo install  ruby

無事にインストールできました。
パッケージも同じ手順にてインストールできました。

感想

冷静に考えれば。。。。

パッケージはGUIの画面があって、GUIにRubyを利用しているのね。。。
今後は言語とパッケージは別々にインストールです。
まぜるな危険!です。

これだけの事ですが、3日ほど悩みました。
だれかの参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1