2016年5月15日日曜日

yumでローカルに保存したrpmを一括適用する方法

ローカルのディレクトリにあるrpmについて、yumの機能を用いて依存関係を考慮して適用したいことがある。ということで、過去の記事でローカルのディレクトリをレポジトリ登録する方法を記載したが、そんなことはしなくても、もっと簡単な方法があった。

yum localinstallを使う

yumに機能がそもそもあったという話。rpmを配置したディレクトリに移動し、以下コマンドを実行するだけでよい。サブスクリプションの設定も不要。

# 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
-------------------------