https://tech-mmmm.blogspot.com/2016/05/yumrpm.html
2021年9月11日土曜日
yum (dnf) でインストールメディアやローカルに保存されているrpmを適用する方法
ローカルのディレクトリにあるrpmについて、yum (RHEL 8以降はdnf) の機能を用いて依存関係を考慮して適用したいことがある。ということで、過去の記事でローカルのディレクトリをリポジトリ登録する方法を記載したが、そんなことはしなくても、もっと簡単な方法があった。
方法としては2つあるため、以下に紹介する。
インストールメディアに含まれるパッケージをリポジトリ登録する
RHELのインストールメディアには、インストール時に追加可能なパッケージが含まれている。インストールメディアマウント後に、その領域をリポジトリとして認識させることで、あたかも通常のyumを使っているときのようにインストールが可能となる。
まず、リポジトリを登録するため、/etc/yum.repos.d/にdvd.repoというファイルを作成する。
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]
baseurl=file:///media/BaseOS/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[dvd-AppStream]
baseurl=file:///media/AppStream/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
これだけでyumを実行するだけで、インストールメディアに含まれるパッケージのインストールが可能となる。試しにyum repolistを実行した結果を以下に記載する。
# yum repolist
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
リポジトリー ‘dvd’ は構成中に名前がありませんので ID を使います
dvd | 4.3 kB 00:00
(1/2): dvd/group_gz | 146 kB 00:00
(2/2): dvd/primary_db | 4.2 MB 00:00
リポジトリー ID リポジトリー名 状態
dvd dvd 5,152
repolist: 5,152
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のパターンも追加

コメント