2008年7月17日木曜日

CentOSでyumのリポジトリを国内指定したりほか

CentOSに限った話ではなくyumユーティリティを使用する際は、
設定を調整してお気に入りのリポジトリを使うようにしてたのですが、
CentOSでは公式よりミラーサイト一覧を国別で取得できると知ってからその設定をするようになりました。
 

元々CentOSのミラー取得スクリプトはリクエスト元のIPを判断して
近場のミラーリストをくれるという話だったので、それも含めてちょっと実験。
 
 
※プラグインで高速化するといった手段もあるようですが、試したことないので割愛。
 

さて国別ミラーリストは、設定ファイルにカントリーコードを指定することで取得できます。
 
"/etc/yum.repos.d/CentOS-Base.repo" ファイルを編集します。
/(省略)
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
(省略)/
↓↓↓mirrorlistの末尾に"&cc=jp"を加える
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=jp

 

設定はコレだけ(他の[updates]やら[addon]も全部)ですが、
"http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=jp"
とはなにしてるんでしょう?
 
折角だからブラウザに突っ込むと、レスポンスが
$releasever is not a valid release or hasnt been released yet

なるほど、リリースバージョンの変数を展開してあげるとよいのか、5を代入して
"http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=os&cc=jp" とすると
Bad arch - not in list - x86_64 alpha s390x ia64 s390 i386

当然アーキテクチャも聞いてくる、i386を指定すると…
"http://mirrorlist.centos.org/?release=5&arch=i386&repo=os&cc=jp"
http://ftp.jaist.ac.jp/pub/Linux/CentOS/5.2/os/i386/
http://ftp.iij.ad.jp/pub/linux/centos/5.2/os/i386/
http://rsync.atworks.co.jp/centos/5.2/os/i386/
http://ftp2.riken.jp/Linux/centos/5.2/os/i386/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.2/os/i386/
ftp://ftp.oss.eznetsols.org/linux/centos/5.2/os/i386/
http://mirror.averse.net/centos/5.2/os/i386/
http://ftp.hostrino.com/pub/centos/5.2/os/i386/
http://mirror.be10.com/centos/5.2/os/i386/
http://centos.candishosting.com.cn/5.2/os/i386/

おお、リストが取れた。ベタなテキストでもらえる模様。
 
 

ではcc=jpを指定しない場合と比べてみる。
"http://mirrorlist.centos.org/?release=5&arch=i386&repo=os"
http://ftp.jaist.ac.jp/pub/Linux/CentOS/5.2/os/i386/
http://ftp.iij.ad.jp/pub/linux/centos/5.2/os/i386/
http://rsync.atworks.co.jp/centos/5.2/os/i386/
http://ftp2.riken.jp/Linux/centos/5.2/os/i386/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.2/os/i386/
ftp://ftp.oss.eznetsols.org/linux/centos/5.2/os/i386/
http://mirror.averse.net/centos/5.2/os/i386/
http://ftp.hostrino.com/pub/centos/5.2/os/i386/
http://mirror.be10.com/centos/5.2/os/i386/
http://centos.candishosting.com.cn/5.2/os/i386/

…アララ同じですね。送信元IPでの判別もきっちり利いているようです。
Fedoraに比べてデフォルトでも早いという話は気のせいではなかった。
 

ついでにccパラメータの有効性を確かめるため、"cc=tw"でトライ
http://ftp.stu.edu.tw/Linux/CentOS/5.2/os/i386/
http://ftp.twaren.net/Linux/CentOS/5.2/os/i386/
http://ftp.tcc.edu.tw/Linux/CentOS/5.2/os/i386/
http://ftp.isu.edu.tw/Linux/CentOS/5.2/os/i386/
http://ftp.cs.pu.edu.tw/Linux/CentOS/5.2/os/i386/
http://ftp.cse.yzu.edu.tw/pub/CentOS/5.2/os/i386/
http://ftp2.tnc.edu.tw/pub1/centos/5.2/os/i386/
ftp://ftp.chu.edu.tw/Linux/CentOS/5.2/os/i386/
http://centos.candishosting.com.cn/5.2/os/i386/
http://ftp.hostrino.com/pub/centos/5.2/os/i386/

ちゃんと台湾。ccパラメータもちゃんと利いているようですね。
 
 

また、アメリカのプロキシつかってcc指定しなかったらこんな感じ、賢いですね。
ftp://mirror.atlantic.net/pub/centos/5.2/os/i386/
http://centos.secsup.org/5.2/os/i386/
http://mirror.steadfast.net/centos/5.2/os/i386/
http://mirror.sanctuaryhost.com/centos/5.2/os/i386/
http://mirrors.easynews.com//linux/centos/5.2/os/i386/
http://centos.omnispring.com/5.2/os/i386/
http://www.gtlib.gatech.edu/pub/centos/5.2/os/i386/
http://ftp.osuosl.org/pub/centos/5.2/os/i386/
http://mirror.rhsmith.umd.edu/pub/centos/5.2/os/i386/
http://mirrors.liquidweb.com/CentOS/5.2/os/i386/

 
 

長々と色々やってみましたが、今更ながら今回思ったこと。
ミラーリストのフォーマットは単純、そしてHTTPのリクエストで簡単に取ってこれる。
 

公式が落ちてミラーリストが取れないこと(結構よくありますよね)を避けるには
普段からミラーリストをローカルに取っておいて、設定の中では"file://リストファイルのPATH"を
指定しておくのがよいかもしれない。