ローカルにおいてあるrpmパッケージの依存関係の順番を気にせずにインストールする方法

インターネットに接続出来ない状態でrpmパッケージをインストールする場合、ローカルに一度rpmパッケージをダウンロードして依存関係を気にしながら順番にインストールを行う事が多いだろう。
それが面倒な場合、ローカルに設置したパッケージに対し、yumコマンドのlocalinstallで一括インストールを行うと良いだろう。

yum localinstall --nogpgcheck rpmパッケージ1 rpmパッケージ2 ...

もちろん、ワイルドカードで指定することもできる。
以下は、「/work/puppet」フォルダ配下にあるPuppetに関するrpmパッケージを一括でインストールした際の内容だ。

[root@test-centos7 puppet]# pwd
/work/puppet
[root@test-centos7 puppet]# ls
augeas-libs-1.1.0-12.el7_0.1.x86_64.rpm        ruby-irb-2.0.0.353-22.el7_0.noarch.rpm
facter-2.4.1-1.el7.x86_64.rpm                  ruby-libs-2.0.0.353-22.el7_0.x86_64.rpm
hiera-1.3.4-1.el7.noarch.rpm                   ruby-shadow-2.2.0-2.el7.x86_64.rpm
libselinux-ruby-2.2.2-6.el7.x86_64.rpm         rubygem-bigdecimal-1.2.0-22.el7_0.x86_64.rpm
libyaml-0.1.4-11.el7_0.x86_64.rpm              rubygem-io-console-0.4.2-22.el7_0.x86_64.rpm
net-tools-2.0-0.17.20131004git.el7.x86_64.rpm  rubygem-json-1.7.7-22.el7_0.x86_64.rpm
pciutils-3.2.1-4.el7.x86_64.rpm                rubygem-psych-2.0.0-22.el7_0.x86_64.rpm
puppet-3.7.4-1.el7.noarch.rpm                  rubygem-rdoc-4.0.0-22.el7_0.noarch.rpm
ruby-2.0.0.353-22.el7_0.x86_64.rpm             rubygems-2.0.14-22.el7_0.noarch.rpm
ruby-augeas-0.4.1-3.el7.x86_64.rpm
[root@test-centos7 puppet]#
[root@test-centos7 puppet]# yum localinstall --nogpgcheck ./*.rpm
読み込んだプラグイン:fastestmirror
./augeas-libs-1.1.0-12.el7_0.1.x86_64.rpm を調べています: augeas-libs-1.1.0-12.el7_0.1.x86_64
./augeas-libs-1.1.0-12.el7_0.1.x86_64.rpm をインストール済みとして設定しています
./facter-2.4.1-1.el7.x86_64.rpm を調べています: 1:facter-2.4.1-1.el7.x86_64
./facter-2.4.1-1.el7.x86_64.rpm をインストール済みとして設定しています
./hiera-1.3.4-1.el7.noarch.rpm を調べています: hiera-1.3.4-1.el7.noarch
./hiera-1.3.4-1.el7.noarch.rpm をインストール済みとして設定しています
./libselinux-ruby-2.2.2-6.el7.x86_64.rpm を調べています: libselinux-ruby-2.2.2-6.el7.x86_64
./libselinux-ruby-2.2.2-6.el7.x86_64.rpm をインストール済みとして設定しています
./libyaml-0.1.4-11.el7_0.x86_64.rpm を調べています: libyaml-0.1.4-11.el7_0.x86_64
./libyaml-0.1.4-11.el7_0.x86_64.rpm をインストール済みとして設定しています
./net-tools-2.0-0.17.20131004git.el7.x86_64.rpm を調べています: net-tools-2.0-0.17.20131004git.el7.x86_64
./net-tools-2.0-0.17.20131004git.el7.x86_64.rpm をインストール済みとして設定しています
./pciutils-3.2.1-4.el7.x86_64.rpm を調べています: pciutils-3.2.1-4.el7.x86_64
./pciutils-3.2.1-4.el7.x86_64.rpm をインストール済みとして設定しています
./puppet-3.7.4-1.el7.noarch.rpm を調べています: puppet-3.7.4-1.el7.noarch
./puppet-3.7.4-1.el7.noarch.rpm をインストール済みとして設定しています
./ruby-2.0.0.353-22.el7_0.x86_64.rpm を調べています: ruby-2.0.0.353-22.el7_0.x86_64
./ruby-2.0.0.353-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./ruby-augeas-0.4.1-3.el7.x86_64.rpm を調べています: ruby-augeas-0.4.1-3.el7.x86_64
./ruby-augeas-0.4.1-3.el7.x86_64.rpm をインストール済みとして設定しています
./ruby-irb-2.0.0.353-22.el7_0.noarch.rpm を調べています: ruby-irb-2.0.0.353-22.el7_0.noarch
./ruby-irb-2.0.0.353-22.el7_0.noarch.rpm をインストール済みとして設定しています
./ruby-libs-2.0.0.353-22.el7_0.x86_64.rpm を調べています: ruby-libs-2.0.0.353-22.el7_0.x86_64
./ruby-libs-2.0.0.353-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./ruby-shadow-2.2.0-2.el7.x86_64.rpm を調べています: 1:ruby-shadow-2.2.0-2.el7.x86_64
./ruby-shadow-2.2.0-2.el7.x86_64.rpm をインストール済みとして設定しています
./rubygem-bigdecimal-1.2.0-22.el7_0.x86_64.rpm を調べています: rubygem-bigdecimal-1.2.0-22.el7_0.x86_64
./rubygem-bigdecimal-1.2.0-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./rubygem-io-console-0.4.2-22.el7_0.x86_64.rpm を調べています: rubygem-io-console-0.4.2-22.el7_0.x86_64
./rubygem-io-console-0.4.2-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./rubygem-json-1.7.7-22.el7_0.x86_64.rpm を調べています: rubygem-json-1.7.7-22.el7_0.x86_64
./rubygem-json-1.7.7-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./rubygem-psych-2.0.0-22.el7_0.x86_64.rpm を調べています: rubygem-psych-2.0.0-22.el7_0.x86_64
./rubygem-psych-2.0.0-22.el7_0.x86_64.rpm をインストール済みとして設定しています
./rubygem-rdoc-4.0.0-22.el7_0.noarch.rpm を調べています: rubygem-rdoc-4.0.0-22.el7_0.noarch
./rubygem-rdoc-4.0.0-22.el7_0.noarch.rpm をインストール済みとして設定しています
./rubygems-2.0.14-22.el7_0.noarch.rpm を調べています: rubygems-2.0.14-22.el7_0.noarch
./rubygems-2.0.14-22.el7_0.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ augeas-libs.x86_64 0:1.1.0-12.el7_0.1 を インストール
---> パッケージ facter.x86_64 1:2.4.1-1.el7 を インストール
---> パッケージ hiera.noarch 0:1.3.4-1.el7 を インストール
---> パッケージ libselinux-ruby.x86_64 0:2.2.2-6.el7 を インストール
---> パッケージ libyaml.x86_64 0:0.1.4-11.el7_0 を インストール
---> パッケージ net-tools.x86_64 0:2.0-0.17.20131004git.el7 を インストール
---> パッケージ pciutils.x86_64 0:3.2.1-4.el7 を インストール
---> パッケージ puppet.noarch 0:3.7.4-1.el7 を インストール
---> パッケージ ruby.x86_64 0:2.0.0.353-22.el7_0 を インストール
---> パッケージ ruby-augeas.x86_64 0:0.4.1-3.el7 を インストール
---> パッケージ ruby-irb.noarch 0:2.0.0.353-22.el7_0 を インストール
---> パッケージ ruby-libs.x86_64 0:2.0.0.353-22.el7_0 を インストール
---> パッケージ ruby-shadow.x86_64 1:2.2.0-2.el7 を インストール
---> パッケージ rubygem-bigdecimal.x86_64 0:1.2.0-22.el7_0 を インストール
---> パッケージ rubygem-io-console.x86_64 0:0.4.2-22.el7_0 を インストール
---> パッケージ rubygem-json.x86_64 0:1.7.7-22.el7_0 を インストール
---> パッケージ rubygem-psych.x86_64 0:2.0.0-22.el7_0 を インストール
---> パッケージ rubygem-rdoc.noarch 0:4.0.0-22.el7_0 を インストール
---> パッケージ rubygems.noarch 0:2.0.14-22.el7_0 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================
 Package               アーキテクチャー
                                 バージョン                   リポジトリー                                   容量
==================================================================================================================
インストール中:
 augeas-libs           x86_64    1.1.0-12.el7_0.1             /augeas-libs-1.1.0-12.el7_0.1.x86_64          981 k
 facter                x86_64    1:2.4.1-1.el7                /facter-2.4.1-1.el7.x86_64                    271 k
 hiera                 noarch    1.3.4-1.el7                  /hiera-1.3.4-1.el7.noarch                      53 k
 libselinux-ruby       x86_64    2.2.2-6.el7                  /libselinux-ruby-2.2.2-6.el7.x86_64           217 k
 libyaml               x86_64    0.1.4-11.el7_0               /libyaml-0.1.4-11.el7_0.x86_64                130 k
 net-tools             x86_64    2.0-0.17.20131004git.el7     /net-tools-2.0-0.17.20131004git.el7.x86_64    917 k
 pciutils              x86_64    3.2.1-4.el7                  /pciutils-3.2.1-4.el7.x86_64                  189 k
 puppet                noarch    3.7.4-1.el7                  /puppet-3.7.4-1.el7.noarch                    6.2 M
 ruby                  x86_64    2.0.0.353-22.el7_0           /ruby-2.0.0.353-22.el7_0.x86_64                63 k
 ruby-augeas           x86_64    0.4.1-3.el7                  /ruby-augeas-0.4.1-3.el7.x86_64                47 k
 ruby-irb              noarch    2.0.0.353-22.el7_0           /ruby-irb-2.0.0.353-22.el7_0.noarch           157 k
 ruby-libs             x86_64    2.0.0.353-22.el7_0           /ruby-libs-2.0.0.353-22.el7_0.x86_64           10 M
 ruby-shadow           x86_64    1:2.2.0-2.el7                /ruby-shadow-2.2.0-2.el7.x86_64                22 k
 rubygem-bigdecimal    x86_64    1.2.0-22.el7_0               /rubygem-bigdecimal-1.2.0-22.el7_0.x86_64      82 k
 rubygem-io-console    x86_64    0.4.2-22.el7_0               /rubygem-io-console-0.4.2-22.el7_0.x86_64      16 k
 rubygem-json          x86_64    1.7.7-22.el7_0               /rubygem-json-1.7.7-22.el7_0.x86_64            93 k
 rubygem-psych         x86_64    2.0.0-22.el7_0               /rubygem-psych-2.0.0-22.el7_0.x86_64          105 k
 rubygem-rdoc          noarch    4.0.0-22.el7_0               /rubygem-rdoc-4.0.0-22.el7_0.noarch           1.2 M
 rubygems              noarch    2.0.14-22.el7_0              /rubygems-2.0.14-22.el7_0.noarch              586 k

トランザクションの要約
==================================================================================================================
インストール  19 パッケージ

合計容量: 22 M
インストール容量: 22 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : ruby-libs-2.0.0.353-22.el7_0.x86_64                                              1/19
  インストール中          : augeas-libs-1.1.0-12.el7_0.1.x86_64                                              2/19
  インストール中          : ruby-augeas-0.4.1-3.el7.x86_64                                                   3/19
  インストール中          : net-tools-2.0-0.17.20131004git.el7.x86_64                                        4/19
  インストール中          : pciutils-3.2.1-4.el7.x86_64                                                      5/19
  インストール中          : libselinux-ruby-2.2.2-6.el7.x86_64                                               6/19
  インストール中          : libyaml-0.1.4-11.el7_0.x86_64                                                    7/19
  インストール中          : rubygem-io-console-0.4.2-22.el7_0.x86_64                                         8/19
  インストール中          : rubygem-json-1.7.7-22.el7_0.x86_64                                               9/19
  インストール中          : ruby-irb-2.0.0.353-22.el7_0.noarch                                              10/19
  インストール中          : rubygem-rdoc-4.0.0-22.el7_0.noarch                                              11/19
  インストール中          : ruby-2.0.0.353-22.el7_0.x86_64                                                  12/19
  インストール中          : rubygem-bigdecimal-1.2.0-22.el7_0.x86_64                                        13/19
  インストール中          : rubygems-2.0.14-22.el7_0.noarch                                                 14/19
  インストール中          : rubygem-psych-2.0.0-22.el7_0.x86_64                                             15/19
  インストール中          : 1:ruby-shadow-2.2.0-2.el7.x86_64                                                16/19
  インストール中          : hiera-1.3.4-1.el7.noarch                                                        17/19
  インストール中          : 1:facter-2.4.1-1.el7.x86_64                                                     18/19
  インストール中          : puppet-3.7.4-1.el7.noarch                                                       19/19
  検証中                  : libyaml-0.1.4-11.el7_0.x86_64                                                    1/19
  検証中                  : ruby-irb-2.0.0.353-22.el7_0.noarch                                               2/19
  検証中                  : rubygems-2.0.14-22.el7_0.noarch                                                  3/19
  検証中                  : libselinux-ruby-2.2.2-6.el7.x86_64                                               4/19
  検証中                  : ruby-2.0.0.353-22.el7_0.x86_64                                                   5/19
  検証中                  : pciutils-3.2.1-4.el7.x86_64                                                      6/19
  検証中                  : ruby-augeas-0.4.1-3.el7.x86_64                                                   7/19
  検証中                  : ruby-libs-2.0.0.353-22.el7_0.x86_64                                              8/19
  検証中                  : 1:ruby-shadow-2.2.0-2.el7.x86_64                                                 9/19
  検証中                  : rubygem-rdoc-4.0.0-22.el7_0.noarch                                              10/19
  検証中                  : rubygem-io-console-0.4.2-22.el7_0.x86_64                                        11/19
  検証中                  : hiera-1.3.4-1.el7.noarch                                                        12/19
  検証中                  : net-tools-2.0-0.17.20131004git.el7.x86_64                                       13/19
  検証中                  : rubygem-json-1.7.7-22.el7_0.x86_64                                              14/19
  検証中                  : rubygem-bigdecimal-1.2.0-22.el7_0.x86_64                                        15/19
  検証中                  : augeas-libs-1.1.0-12.el7_0.1.x86_64                                             16/19
  検証中                  : 1:facter-2.4.1-1.el7.x86_64                                                     17/19
  検証中                  : rubygem-psych-2.0.0-22.el7_0.x86_64                                             18/19
  検証中                  : puppet-3.7.4-1.el7.noarch                                                       19/19

インストール:
  augeas-libs.x86_64 0:1.1.0-12.el7_0.1                   facter.x86_64 1:2.4.1-1.el7
  hiera.noarch 0:1.3.4-1.el7                              libselinux-ruby.x86_64 0:2.2.2-6.el7
  libyaml.x86_64 0:0.1.4-11.el7_0                         net-tools.x86_64 0:2.0-0.17.20131004git.el7
  pciutils.x86_64 0:3.2.1-4.el7                           puppet.noarch 0:3.7.4-1.el7
  ruby.x86_64 0:2.0.0.353-22.el7_0                        ruby-augeas.x86_64 0:0.4.1-3.el7
  ruby-irb.noarch 0:2.0.0.353-22.el7_0                    ruby-libs.x86_64 0:2.0.0.353-22.el7_0
  ruby-shadow.x86_64 1:2.2.0-2.el7                        rubygem-bigdecimal.x86_64 0:1.2.0-22.el7_0
  rubygem-io-console.x86_64 0:0.4.2-22.el7_0              rubygem-json.x86_64 0:1.7.7-22.el7_0
  rubygem-psych.x86_64 0:2.0.0-22.el7_0                   rubygem-rdoc.noarch 0:4.0.0-22.el7_0
  rubygems.noarch 0:2.0.14-22.el7_0

完了しました!

なお、依存関係のある各rpmパッケージをダウンロードする際、もしOSのバージョンが同じマシンがインターネットに接続でき、かつそのパッケージを未インストールなのであれば、以下のようにyumコマンドを用いてダウンロードすると良いだろう。

yum install --downloadonly --downloaddir=ダウンロード先のディレクトリ パッケージ名

すでに依存関係のあるパッケージがインストールされているマシンでこのコマンドを行うと、そのパッケージについては認識してくれない(ダウンロードしてくれない)ので注意。これはyumdownloaderも同様の様子。