"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"インスタンスで試行錯誤した結果です。
しかし下記のように、実際にインストール済みのRPMとダウンロードしたRPMの数が
- -L: 指定した数の引数をコマンドに渡す
- -P: 指定した数のプロセスを並列に実行
異なりました。
# 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
< gpg-pubkey-00f97f56-467e318a.(none).rpm
< gpg-pubkey-0608b895-4bd22942.(none).rpm
< gpg-pubkey-5ebd2744-418ffac9.(none).rpm
< gpg-pubkey-6b8d79e6-3f49313d.(none).rpm
< gpg-pubkey-c105b9de-4e0fd3a3.(none).rpm
ということで"grep -v gpg-pubkey"入れることで、数字もあいました!
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep -v gpg-pubkey | wc -l
303
最終的には下記のようなコマンドでダウンロードすればOKのはずです。
rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep -v gpg-pubkey | xargs -L3 -P5 yumdownloader --cacheonly --nogpgcheck
そしてダウンロードしたRPMを"yum"リポジトリとして公開(S3)にする方法は
下記で紹介済みです。(とりあえず)
S3上にyumリポジトリを作成(とりあえず)SUZ-LAB Advent Calendar が遅れ気味...
--------
http://www.suz-lab.com

0 コメント:
コメントを投稿