自宅環境に
- CentOSのミラー
- 自作
なyumレポジトリ作りたいけど、手動もめんどうだし、cobblerもちょっと大げさだし・・・
というわけでmrepoというツールを使ってみました。
http://dag.wieers.com/home-made/mrepo/
20行ほどのコンフィグを書いてmrepo -ugvvと打つだけでやりたいことができました。
シンプルでなかなかイイ感じなので、しばらく使ってみようかと思います。
以下、動作確認も兼ねた利用手順です。
インストール
とりあえずEPELから(作者はあのDagなので、みんなはぜひrpmforgeから!)
[root@repo ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm [root@repo ~]# yum install mrepo
/etc/httpd/conf.d/mrepo.confを確認してApacheリロード。
[root@repo ~]# /etc/init.d/httpd reload httpd を再読み込み中: [ OK ]
基本設定。ほぼデフォルトです
[root@repo ~]# vi /etc/mrepo.conf [main] srcdir = /var/mrepo wwwdir = /var/www/mrepo confdir = /etc/mrepo.conf.d arch = x86_64 mailto = root@localhost smtp-server = localhost
http://<サーバ>/mrepo/ にアクセスすればレポジトリの公開状況が確認できます。
/usr/share/doc/mrepo-0.8.7/のドキュメント、サンプル設定と合わせて随時参照してください。
CentOSミラーを作成
設定ファイル作成
ディストリビューションごとの設定は/etc/mrepo.conf.d/に置いていきます。
ミラーサイトはここから好きなの選びましょう
[root@repo ~]# cp /usr/share/doc/mrepo-0.8.7/dists/centos5.conf /etc/mrepo.conf.d/ [root@repo ~]# vi /etc/mrepo.conf.d/centos5.conf [centos5] name = CentOS $release ($arch) release = 5 arch = x86_64 metadata = repomd repoview #ISOファイル指定 iso = CentOS-5.6-x86_64-bin-DVD-?of?.iso #レポジトリ名とミラーサイトを指定 updates = rsync://ftp.riken.jp/centos/$release/updates/$arch/RPMS/ fasttrack = rsync://ftp.riken.jp/centos/$release/fasttrack/$arch/RPMS/ centosplus = rsync://ftp.riken.jp/centos/$release/centosplus/$arch/RPMS/ extras = rsync://ftp.riken.jp/centos/$release/extras/$arch/RPMS/ addons = rsync://ftp.riken.jp/centos/$release/addons/$arch/RPMS/ contrib = rsync://ftp.riken.jp/centos/$release/contrib/$arch/RPMS/
※DAGやEPELもミラーできるがとりあえずやらない
isoファイルをコピー
[root@repo ~]# mkdir /var/mrepo/iso [root@repo ~]# mv iso/CentOS-5.6-x86_64-bin-DVD-?of2.iso /var/mrepo/iso/
※ソースを見た限りだと/var/mrepo/、/var/mrepo/iso/、/var/mrepo/centos5-x86_64/、/var/mrepo/centos5/のどれかに置けばいいようです。
設定の確認、ISOファイルのマウント
[root@repo ~]# mrepo -vv
公開ディレクトリにISOファイル(シンボリックリンク)とマウントディレクトリが配置されます
[root@repo ~]# ls /var/www/mrepo/centos5-x86_64/ disc1 disc2 iso [root@repo ~]# ls /var/www/mrepo/centos5-x86_64/iso/ CentOS-5.6-x86_64-bin-DVD-1of2.iso CentOS-5.6-x86_64-bin-DVD-2of2.iso [root@repo ~]# df -h ... /var/mrepo/iso/CentOS-5.6-x86_64-bin-DVD-1of2.iso 4.0G 4.0G 0 100% /var/www/mrepo/centos5-x86_64/disc1 /var/mrepo/iso/CentOS-5.6-x86_64-bin-DVD-2of2.iso 640M 640M 0 100% /var/www/mrepo/centos5-x86_64/disc2
レポジトリのミラー
[root@repo ~]# mrepo -uvv
/var/mrepo/centos5-x86_64にレポジトリのコピーが作られます
[root@repo mrepo-0.8.7]# ls /var/mrepo/centos5-x86_64 addons centosplus contrib extras fasttrack updates [root@repo ~]# ls /var/mrepo/centos5-x86_64/updates/ apr-1.2.7-11.el5_6.4.i386.rpm apr-1.2.7-11.el5_6.4.x86_64.rpm apr-devel-1.2.7-11.el5_6.4.i386.rpm ...
公開ディレクトリに展開
[root@repo ~]# mrepo -gvv
公開ディレクトリのRPM.<レポジトリ名>にRPM(シンボリックリンク)が配置されます。
[root@repo ~]# ls /var/www/mrepo/centos5-x86_64/ HEADER.shtml RPMS.all RPMS.extras RPMS.updates iso README.shtml RPMS.centosplus RPMS.fasttrack disc1 RPMS.addons RPMS.contrib RPMS.os disc2 [root@repo ~]# ls /var/www/mrepo/centos5-x86_64/RPMS.updates/ apr-1.2.7-11.el5_6.4.i386.rpm apr-1.2.7-11.el5_6.4.x86_64.rpm apr-devel-1.2.7-11.el5_6.4.i386.rpm ...
自作レポジトリの作成
freezeレポジトリにテスト済みのものを、testテストレポジトリにテスト中のものを、というシナリオでいきます
RPMを配置
テキトウなディレクトリにRPMを突っ込みます。
[root@repo ~]# mkdir -p /var/rpm/{freeze,test} [root@repo ~]# mv rpm/MySQL-*.rpm /var/rpm/freeze/ [root@repo ~]# mv rpm/q4m-0.9.5-1.x86_64.rpm /var/rpm/test/
設定ファイル編集
/etc/mrepo.conf.d/centos5.confに以下を追記
freeze = file:///var/rpm/freeze/ test = file:///var/rpm/test/
RPMの取り込み
レポジトリ、ディストリビューションを指定するオプションをつけてアップデート
[root@repo ~]# mrepo -uvv -r freeze,test centos5-x86_64
この場合はシンボリックが作成されるだけなので、構成変更がなければ初回のみで良いです
[root@repo ~]# ll /var/mrepo/centos5-x86_64 合計 108 drwxr-xr-x 2 root root 4096 10月 20 2009 addons drwxr-xr-x 2 root root 12288 4月 17 04:28 centosplus drwxr-xr-x 2 root root 4096 5月 15 2010 contrib drwxr-xr-x 2 root root 28672 5月 15 00:21 extras drwxr-xr-x 2 root root 4096 5月 19 06:17 fasttrack lrwxrwxrwx 1 root root 35 5月 23 10:49 freeze -> ../../os/centos5-x86_64/rpm/freeze/ lrwxrwxrwx 1 root root 33 5月 23 10:49 test -> ../../os/centos5-x86_64/rpm/test/ drwxr-xr-x 2 root root 53248 5月 19 04:58 updates
公開ディレクトリに展開
[root@repo ~]# mrepo -gvv -r freeze,test centos5-x86_64
シンボリックリンクが作成されてます
[root@repo ~]# ls /var/www/mrepo/centos5-x86_64/RPMS.freeze/ MySQL-client-community-5.1.56-1.rhel5.x86_64.rpm MySQL-shared-community-5.1.56-1.rhel5.x86_64.rpm MySQL-devel-community-5.1.56-1.rhel5.ia64.rpm MySQL-shared-compat-5.1.56-1.rhel5.x86_64.rpm MySQL-server-community-5.1.56-1.rhel5.x86_64.rpm repodata [root@repo ~]# ls /var/www/mrepo/centos5-x86_64/RPMS.test q4m-0.9.5-1.x86_64.rpm repodata
クライアント設定
/etc/yum.repos.d/CentOS-Base.repoを以下のように書き換えちゃいましょう。
[root@test02 ~]# cp /etc/yum.repos.d/CentOS-Base.repo{,.bak} [root@test02 ~]# vi /etc/yum.repos.d/CentOS-Base.repo [base-local] name=CentOS-$releasever - Base baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.os/ gpgcheck=0 [updates-local] name=CentOS-$releasever - Updates baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.updates/ gpgcheck=0 [addons-local] name=CentOS-$releasever - Addons baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.addons/ gpgcheck=0 [extras-local] name=CentOS-$releasever - Extras baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.extras/ gpgcheck=0 [centosplus-local] name=CentOS-$releasever - Plus baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.centosplus/ gpgcheck=0 enabled=0 [contrib-local] name=CentOS-$releasever - Contrib baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.contrib/ gpgcheck=0 enabled=0 [fasttrack-local] name=CentOS-$releasever - Fasttrack baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.fasttrack/ gpgcheck=0 enabled=0
違いがわかりやすいように-localつけてます
(※ちゃんと変数つかうようにあとで書きなおす・・・)
自作レポジトリも登録
[root@test02 ~]# vi /etc/yum.repos.d/local.repo [freeze] name=CentOS-$releasever - Freeze baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.freeze/ gpgcheck=0 [test] name=CentOS-$releasever - Test baseurl=http://192.168.1.10/mrepo/centos5-x86_64/RPMS.test/ gpgcheck=0 enabled=0
使ってみる!!!
[root@test02 ~]# yum clean all [root@test02 ~]# yum install php53 ... ====================================================================== Package Arch Version Repository Size ====================================================================== Installing: php53 x86_64 5.3.3-1.el5_6.1 updates-local 1.3 M Installing for dependencies: php53-cli x86_64 5.3.3-1.el5_6.1 updates-local 2.4 M php53-common x86_64 5.3.3-1.el5_6.1 updates-local 605 k Transaction Summary ====================================================================== Install 3 Package(s) Upgrade 0 Package(s) Total download size: 4.3 M Is this ok [y/N]: y … Complete! [root@test02 ~]# yum install --enablerepo=test q4m ... ====================================================================== Package Arch Version Repository Size ====================================================================== Installing: q4m x86_64 0.9.5-1 test 712 k Installing for dependencies: MySQL-server-community x86_64 5.1.56-1.rhel5 freeze 20 M Transaction Summary ====================================================================== Install 2 Package(s) Upgrade 0 Package(s) Total download size: 21 M Is this ok [y/N]: y ... Complete! [root@test02 ~]#
あと細々したこと
自動更新したければcron設定しましょう
50 4 * * * mrepo -ug
--remountオプションがコケるのでちょっとだけ修正しました
[root@repo ~]# diff /usr/bin/mrepo /usr/bin/mrepo.orig 584c584 < if mount: --- > if mountpoint(mount):