rpm
について、yum
(RHEL 8以降はdnf
) の機能を用いて依存関係を考慮して適用したいことがある。ということで、過去の記事でローカルのディレクトリをリポジトリ登録する方法を記載したが、そんなことはしなくても、もっと簡単な方法があった。方法としては2つあるため、以下に紹介する。
インストールメディアに含まれるパッケージをリポジトリ登録する
RHELのインストールメディアには、インストール時に追加可能なパッケージが含まれている。インストールメディアマウント後に、その領域をリポジトリとして認識させることで、あたかも通常の
yum
を使っているときのようにインストールが可能となる。まず、リポジトリを登録するため、
/etc/yum.repos.d/
にdvd.repo
というファイルを作成する。なお、RHEL 8.6で確認したところ、
name=[リポジトリ名]
の設定がない場合、「レポジトリ 'dvd-BaseOS' idを使用した設定内に見つかりません。」といったエラーが発生するようになったため、設定追加をした。RHEL 7の場合
# cat << EOF > /etc/yum.repos.d/dvd.repo
[dvd]
baseurl=file:///media/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
RHEL 8の場合
# cat << EOF > /etc/yum.repos.d/dvd.repo
[dvd-BaseOS]
name=dvd-BaseOS
baseurl=file:///media/BaseOS/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[dvd-AppStream]
name=dvd-AppStream
baseurl=file:///media/AppStream/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
これだけでyum
やdnf
実行時に、インストールメディアに含まれるパッケージを参照することができる。ただし、他にリポジトリが設定されている場合、そのリポジトリに対してインターネット経由で接続を試みてしまうため、
--disablerepo=* --enablerepo=dvd*
を指定し、インストールメディアのみ参照するようコマンドを実行しよう。例として、
dnf
を用いてethtoolをインストールした際の実行結果を記載する。
# dnf --disablerepo=* --enablerepo=dvd* install ethtool
dvd-BaseOS 243 MB/s | 2.6 MB 00:00
dvd-AppStream 312 MB/s | 7.9 MB 00:00
パッケージ ethtool-2:5.8-7.el8.x86_64 は既にインストールされています。
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
アップグレード:
ethtool x86_64 2:5.13-1.el8 dvd-BaseOS 218 k
トランザクションの概要
================================================================================
アップグレード 1 パッケージ
~(以下略)~
yum localinstallを使う
yum
にローカルディレクトリのパッケージを一括でインストールする機能がある。rpm
を配置したディレクトリに移動し、yum localinstall *
コマンドを実行すればよく、サブスクリプションの設定も不要でインストールすることができる。# yum localinstall *
読み込んだプラグイン:product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
ローカルパッケージ処理の設定をしています
ConsoleKit-0.4.1-6.el6.x86_64.rpm を調べています: ConsoleKit-0.4.1-6.el6.x86_64
次のリポジトリーへの更新として ConsoleKit-0.4.1-6.el6.x86_64.rpm を設定します: ConsoleKit-0.4.1-3.el6.x86_64
ConsoleKit-libs-0.4.1-6.el6.x86_64.rpm を調べています: ConsoleKit-libs-0.4.1-6.el6.x86_64
次のリポジトリーへの更新として ConsoleKit-libs-0.4.1-6.el6.x86_64.rpm を設定します: ConsoleKit-libs-0.4.1-3.el6.x86_64
Red_Hat_Enterprise_Linux-Release_Notes-6-en-US-8-2.el6.noarch.rpm を調べています: Red_Hat_Enterprise_Linux-Release_Notes-6-en-US-8-2.el6.noarch
~(中略)~
トランザクションの要約
================================================================================
インストール 3 パッケージ
アップグレード 250 パッケージ
合計容量: 899 M
これでいいですか? [y/N] y ←★ここでyを押せばインストール&更新が開始
ちなみに、似たようなものに
yum localupdate
というものもあるのだが、なぜかうまくいかなかった。yum localinstall
でもきちんとインストールとアップグレードを実施できるので、特に問題ないので詳しくは調べていない。# yum localupdate *
読み込んだプラグイン:product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
ローカルパッケージ処理の設定をしています
ConsoleKit-0.4.1-6.el6.x86_64.rpm を調べています: ConsoleKit-0.4.1-6.el6.x86_64
次のリポジトリーへの更新として ConsoleKit-0.4.1-6.el6.x86_64.rpm を設定します: ConsoleKit-0.4.1-3.el6.x86_64
ConsoleKit-libs-0.4.1-6.el6.x86_64.rpm を調べています: ConsoleKit-libs-0.4.1-6.el6.x86_64
次のリポジトリーへの更新として ConsoleKit-libs-0.4.1-6.el6.x86_64.rpm を設定します: ConsoleKit-libs-0.4.1-3.el6.x86_64
Red_Hat_Enterprise_Linux-Release_Notes-6-en-US-8-2.el6.noarch.rpm を調べています: Red_Hat_Enterprise_Linux-Release_Notes-6-en-US-8-2.el6.noarch
~(中略)~
--> 依存性解決を終了しました。
エラー: パッケージ: 1:java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64 (/java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64)
要求: libsctp.so.1(VERS_1)(64bit)
エラー: パッケージ: 1:java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64 (/java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64)
要求: libsctp.so.1()(64bit)
エラー: パッケージ: 1:java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64 (/java-1.7.0-openjdk-1.7.0.101-2.6.6.4.el6_8.x86_64)
要求: libpcsclite.so.1()(64bit)
問題を回避するために --skip-broken を用いることができません
これらを試行できます: rpm -Va --nofiles --nodigest
更新履歴
- 2016/5/15 新規作成
- 2021/7/18 インストールメディアをレポジトリに登録する手順を追加。その他全体的に体裁を修正
- 2021/9/11 dvd.repoにRHEL 8のパターンも追加
- 2022/8/17 RHEL 8のdvd.repoにnameの設定を追加。実行結果をdnfの実行結果に修正
0 件のコメント:
コメントを投稿