yumのリポジトリは、バージョンのものが削除されてしまう可能性があるので、現状の環境を再現する為に、
その時にインストールしたRPMが必要なことがあります。
(当時のAMIが存在すればいいのですが、他環境での構築も視野に入れる事を目的としています)
yumリポジトリからのRPMのダウンロードはyumdownloaderというコマンドで可能です。
下記のようにインストール(yum)して利用することができます。
# yum -y install yum-utils
...
# yumdownloader httpd-2.2.15-15.el6.centos.1.x86_64
...
httpd-2.2.15-15.el6.centos.1.x86_64.rpm
# ls
httpd-2.2.15-15.el6.centos.1.x86_64.rpm
インストールされているRPMのダウンロードは下記となります。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n" | xargs -L3 -P5 yumdownloader --cacheonly --nogpgcheck
...
尚、xargsのオプション(-L3 -P5)はt1.microインスタンスで試行錯誤した結果です。
- -L: 指定した数の引数をコマンドに渡す
- -P: 指定した数のプロセスを並列に実行
しかし下記のように、実際にインストール済みのRPMとダウンロードしたRPMの数が異なりました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n" | wc -l
308
# ls -1 | wc -l
303
原因としては、上記でダウンロードしていた時に、エラーが出ていたようだったので、次のように調べてみると、
インストール済みRPMのリストにgpg-pubkeyが混じっていました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n" | awk '{ print $1 ".rpm";}' | sort > /tmp/list-installed.txt
# ls -1 | sort > /tmp/list-downloaded.txt
# diff /tmp/list-installed.txt /tmp/list-downloaded.txt
71,75d70そこでgrep -v gpg-pubkeyを入れることで、数字も合いました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n" | grep -v gpg-pubkey | wc -l
303最終的には下記のようなコマンドでダウンロードすれば問題ないはずです。
rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n" | grep -v gpg-pubkey | xargs -L3 -P5 yumdownloader --cacheonly --nogpgcheckそしてダウンロードしたRPMをyumリポジトリとして公開(S3)にする方法は
S3上にyumリポジトリを作成(とりあえず)で紹介済みです。