オフライン環境の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日ほど悩みました。
だれかの参考になれば幸いです。