なんでそんなことをするのかというと。。。
自分はインフラエンジニアやってますが、お仕事だと、ネットに出れないサーバがいたり、そもそもインストールは環境管理側のセンターに任せろ。でも、そのための手順とモノは用意してね。ということが結構ある。
なので、依存パッケージごと丸ごとDLできればすげぇ楽なんです。で、今回の方法が大いに役に立つ。
やり方の結論は、yum downloadonly
(yum の依存関係ファイルを全てダウンロードだけしてくれるコマンド)を使うです。
環境
- RHEL6.2(EC2上に立ててる。Vagrantで立ててますが、その手順はまた別記事で)
やり方
downloadonlyをyumで導入
デフォだとそもそもこれが入ってないので入れる。
# yum -y install yum-plugin-downloadonly
実際ダウンロードしてみる
# yum install --downloadonly --downloaddir=<directory> <package>
以下はANSIBLEの場合(実は、ANSIBLEをRHEL6.2に入れたくて、その過程で書いてる。ANSIBLE記事は別記事で。)
# yum install --downloadonly --downloaddir=/tmp/ansible ansible ・・・ログ略・・・ # ls -l /tmp/ansible/ 合計 3860 -rw-r--r--. 1 root root 161120 4月 27 16:18 2012 PyYAML-3.10-3.el6.x86_64.rpm -rw-r--r--. 1 root root 836712 5月 24 12:21 2014 ansible-1.6.2-1.el6.noarch.rpm -rw-r--r--. 1 root root 53452 3月 29 11:52 2014 libyaml-0.1.6-1.el6.x86_64.rpm -rw-r--r--. 1 root root 1494848 4月 16 17:54 2014 python-babel-0.9.4-5.1.el6.noarch.rpm -rw-r--r--. 1 root root 543156 3月 14 23:37 2014 python-crypto2.6-2.6.1-1.el6.x86_64.rpm -rw-r--r--. 1 root root 72164 1月 7 12:10 2013 python-httplib2-0.7.7-1.el6.noarch.rpm -rw-r--r--. 1 root root 477156 6月 11 22:47 2014 python-jinja2-2.2.1-2.el6_5.x86_64.rpm -rw-r--r--. 1 root root 224124 12月 27 13:38 2012 python-keyczar-0.71c-1.el6.noarch.rpm -rw-r--r--. 1 root root 71700 4月 16 17:54 2014 python-pyasn1-0.0.12a-1.el6.noarch.rpm
バッチリぽいですね。これをSCPとかでローカルに引っ張れば手元で管理しとけます。
ちなみに、DL先のディレクトリが無い場合は勝手に作ってくれるので、事前に用意しておく必要なし。
ちなみに、今回はEPELからDLしてます。
EPELというのは、RPMの拡張パッケージで、デフォルトのリポジトリに無いやつがあったりします。 その導入手順はコチラに書きましたので良ければ。
で、EPELの続きですが。。そもそも、EPELに入ってるRPMはどうやって知る?
いろいろ、あるかもしれませんが、WEBで見るのが楽かと。
EPELのルートから辿って、ブラウザ上で検索するのが楽です。自分はそうしてます。
で、メジャーバージョン> CPUアーキテクチャ とディレクトリを辿れば、RPMのページに辿りつけます。
今回のRHEL6.2だと、以下の具合で該当のRPMページに辿り着きます。 1. EPELのルートにアクセス 1. メジャーバージョンと用途(Clientと被るパッケージもあります):6Server 1. CPUアーキテクチャ:Intel x86_64 1. RPMの一覧ページで「例)ANSIBLE(目的のRPM)」で検索
該当のパッケージがあれば、EPELも含めて上記の方法でDL出来ます。
まぁ、一度リポジトリを登録してしまえば、yum コマンド発行時にどこにどのパッケージがあるか意識しないですけど。。
自分の使い方
この記事の冒頭で書いたように、そもそもネットアクセスできないサーバでこの手順を試してもダメです。当たり前ですが。 なので、一台ネットに出れる自由に触れる自分用のRHEL6.2サーバ(本番となるべく同じバージョンのサーバ)を用意しておいて、 そこで、この手順を試す。→ DLする。 → 本番サーバにSCPとかで持っていく。とかいう手順を踏みます。
自分の場合は、自由に触れるサーバはEC2で用意します。さらに、Vagrantで起動を組み合わせとけば、バージョン違いはami-idだけ調べれば良いので非常に楽と。
EC2使ったらダメということであれば、VirtualBoxかVMWare Player上でやるかな。
ちなみに、このVagrantで、RHEL6.2を建てるという手順は別記事で書きます。 以前に、QiitaでVagrantで AWS EC2インスタンス(RHEL5.5)を作成するという記事を書きましたが、今回バージョン違いとかでそのままでは上手く動かなかったので、焼き直しというイメージです。