CentOS 5.x yum のリポジトリ設定 Final

本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

ちうことで、度々書いてる yum のリポジトリに関する事。
wireshark で GPG チェックへくられたりなんだーかんだーで書き換えたけどいい加減そんなんと
おさらばしたいので mirrorlist つかって参照先を複数用意してやることにした。


ってまぁ、ミラーまでファイル転けてたらアレなんですが。はい。
とりあえずこの設定一発かましておけばあとはもう良いだろうという感じになったんで Final な訳であります。

先ずはミラーリストの取得をするスクリプトを書いた。
yum は root でしか実行しないので「/root/bin/yum-get-mirror.sh」という感じで。
yum-get-mirror.sh なんて名前にしてみた。
中身はこんな感じ。弄りやすいように大概は変数に入れ込む形。
[bash]#!/bin/sh
#
# Get ‘yum mirror uri lists’ for any repository
# 2009.04.06
#

# Mirror list’s url
URL=”http://mirrorlist.centos.org/”
# OS Release Major version number
Rel=”5″
# OS Architecture
Arc=”i386″
# Repository list. (Separator is space)
Rep=”contrib updates os extras centosplus addons”
# Country Code
Cc=”jp”
# Data save location
Data_path=”/root/etc/repository/”
Log_path=”/root/etc/repository/get-repo.log”

URI=”${URL}?cc=${Cc}&release=${Rel}&arch=${Arc}”

for i in ${Rep};
do
/usr/bin/wget -q -o ${Log_path} “${URI}&repo=${i}” -O ${Data_path}${i}.repo
done

exit $?
[/bash]
先に Data_path で指定したミラーリスト保存先のディレクトリを掘ってく事。
あとは自分の OS バージョンやらアーキテクチャを合わせて編集する。

実行して問題無ければこいつを cron で回してやる。

# crontab -l
0 5 */4 * * /root/bin/yum-get-mirror.sh

4 日毎に 1 回取得でいいかなっと。この辺は適時弄る。

次にリポジトリの書き換えなのでカレントは移動しときましょう。

# cd /etc/yum.repos.d
[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/
        http://ftp.iij.ad.jp/pub/linux/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS5

という感じで gpgkey を取得しにいってるので、これをローカルに落としておいた方がエコかなと思ってみた。
うちはいま CentOS 5 なので「/etc/pki/rpm-gpg/」以下へ保存する事とした。

# wget http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS5 -O /etc/pki/rpm-gpg/

ってな感じで良いかな。
他に dag や dries なんて追加していたら同じように GPG-KEY を落としておく事。

そいでリポジトリファイルの書き換えに入ると。

baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/
        http://ftp.iij.ad.jp/pub/linux/centos/$releasever/os/$basearch/

すでにミラーぽくしてあったのだが、baseurl というエントリは使わないので削除する。

とりあえずこの 2 行は手動で削除して各々のリポジトリを書き換える。

mirrorlist=file:///root/etc/repository/os.repo

こんな風に 1 こ 1 こ。
http じゃなくてローカルに落としたミラーリストをここで参照させる訳であります。

次に

gpgkey=http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS5

こんな行がいくつもあるけど書き換えが怠い。幸いここはまとめて置換 ok なので次のコマンドで 1 発書き換え。

# sed -r ‘s/gpgkey\=http\:\/\/.*(RPM.*)$/gpgkey\=file\:\/\/\/etc\/pki\/rpm-gpg\/\1/g;’ ./CentOS-Base.repo > tmp && mv tmp ./CentOS-Base.repo

正規表現好きなのでまぁこんな感じで一発置換。

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

こんななったり

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY.dag.txt

こんな風に置換されているハズ!!

最後に

# yum clean all
# yum check-update

なんてやって問題がなければこのまま運用してみましょい。
確認でミラー先への接続状況はこんな感じで見ることができる。

# cat /var/cache/yum/timedhosts.txt
ftp.riken.jp 0.0293200016022
centos.mirror.cdnetworks.com 0.0691380500793
ftp.yz.yamagata-u.ac.jp 0.04407787323
rsync.atworks.co.jp 0.035059928894
ftp.iij.ad.jp 0.0649430751801
mirror.averse.net 0.0877509117126
mirror.nus.edu.sg 0.102138996124
ftp.belnet.be 0.241631984711
ftp.nara.wide.ad.jp 0.038834810257
mirror.khlug.org 0.0518579483032
apt.sw.be 0.946067810059
ftp.isu.edu.tw 0.0852479934692
ftp.oss.eznetsols.org 99999999998
ftp.jaist.ac.jp 0.0531120300293
www.ftp.ne.jp 0.0358090400696
ftp.twaren.net 0.196882009506
mirror.yandex.ru 0.213891029358

一応今回の記事で出来たファイルを書いておきま。
シェルで取得したリポジトリ毎のミラーリストのファイル

# pwd
/root/etc/repository
# ls -l
合計 24
-rw-r–r– 1 root root 555 4月 6 05:32 addons.repo
-rw-r–r– 1 root root 469 4月 6 05:32 centosplus.repo
-rw-r–r– 1 root root 565 4月 6 05:32 contrib.repo
-rw-r–r– 1 root root 555 4月 6 05:32 extras.repo
-rw-r–r– 1 root root 0 4月 6 05:32 get-repo.log
-rw-r–r– 1 root root 515 4月 6 05:32 os.repo
-rw-r–r– 1 root root 377 4月 6 05:32 updates.repo

リポジトリファイル「/etc/yum.repos.d/CentOS-Base.repo」

[base]
name=CentOS-$releasever - Base
mirrorlist=file:///root/etc/repository/os.repo
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#released updates
[update]
name=CentOS-$releasever - Updates
mirrorlist=file:///root/etc/repository/updates.repo
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=file:///root/etc/repository/addons.repo
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=file:///root/etc/repository/extras.repo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=file:///root/etc/repository/centosplus.repo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=file:///root/etc/repository/contrib.repo
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

#packages in testing
#[testing]
#name=CentOS-$releasever - Testing
#baseurl=http://ftp.riken.jp/Linux/centos/$releasever/testing/$basearch/
#gpgcheck=1
#enabled=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS5

[dries]
name=Extra Fedora rpms dries - $releasever - $basearch
baseurl=http://ftp.riken.jp/Linux/dries/redhat/el$releasever/en/$basearch/RPMS.dries
        http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el$releasever/en/$basearch/dries/RPMS
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY.dries.txt

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
        http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY.dag.txt

流石に dag と dries は CentOS の管轄外なので自力ミラーで。

こんなもんで ok でしょう。

スポンサーリンク