外部ネットワークとは隔離された環境にいろいろ作る時のために,同じくだいぶ前から欲しいと思っていた rpm ファイルの local mirror も作ることにしました.
…と言っても,調べてみたら作業自体はえらく簡単でした.こんなならもっと早くやっておけばよかった…^^;
流れとしては「rsync で全ファイルを取得」「ディレクトリを httpd から見えるように設定」「ダウンロード先を local mirror に向ける」だけです.
rsync で全ファイルを取得
centos.org にある Mirror List から rsync をサポートしているホストを選び,近そうなところからダウンロードする.
今回は IIJ の rsync ミラーを使うことにした.
例えば下記のようなスクリプトで,rsync を使って必要なファイルを取得.
#!/bin/sh for ver in 5.9 6.3 do rsync -avSHP --verbose --delete \ --exclude "centosplus" \ --exclude "local*" \ --exclude "cr" \ --exclude "fasttrack" \ --exclude "isos" \ rsync://ftp.iij.ad.jp/pub/linux/centos/$ver/ \ ~/mirror/$ver/ done exit 0
ファイルサイズはそれぞれこんな感じになった.6.3 の updates がけっこう大きいなぁ.
$ du -hs 5.9/* 84K 5.9/addons 346M 5.9/centosplus 84K 5.9/contrib 243M 5.9/extras 8.6G 5.9/os 1.2G 5.9/updates $ du -hs 6.3/* 7.9G 6.3/centosplus 84K 6.3/contrib 29M 6.3/extras 8.7G 6.3/os 34G 6.3/updates
ディレクトリを公開
apache を設定.Options +Indexes
は必要ない?かもしれないけど,あったほうが便利なので.
<VirtualHost *:80> ServerAdmin email@example.com ServerName centos-mirror.example.com DocumentRoot /your/mirror/dir ErrorLog logs/centos-mirror-error_log CustomLog logs/centos-mirror-access_log common <Directory /your/mirror/dir> Options +Indexes </Directory> </VirtualHost>
ダウンロード先を local mirror にする
/etc/yum.repos.d/CentOS-Base.repo
ファイルを書き換える.mirrorlist=
行をコメントアウトして,baseurl=
行を今回作ったサーバに向ける.
apache で設定したパスがたどれるように.ホスト名だけ書き換えたら見えるようにした方が楽でよさそうなので,/centos
以下に見えるように設定した.
[base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os baseurl=http://centos-mirror.example.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
簡単!