がらくたネット


リポジトリ

リポジトリ

リポジトリはバージョン管理システムが管理しているデータや情報が保管されている場所やデータベースの事。

リポジトリのコピーサイトを作る

稼働サーバが増えたりインストールとかをいっぱいするとネット上にあるリポジトリに常にアクセスが発生する。 ネットワークトラフィックって馬鹿にできないよね。 なので、ローカルにリポジトリのコピーを作ってしまおうプロジェクト。 これによって、ある瞬間のリポジトリデータを保持し続ける事も可能になるしね。

条件としてリポジトリ保存ディレクトリを/opt/repoに設定
そこにepelとrpmforgeとremiのリポジトリデータをコピーするテスト

lftp -e 'mirror --delete --only-newer -X *isos/* /enterprise/5/remi/i386 /opt/repo/remi/5/i386 && exit' http://rpms.famillecollet.com
lftp -e 'mirror --delete --only-newer -X *isos/* /redhat/el5/en/i386/rpmforge /opt/repo/rpmforge/5/i386 && exit' http://apt.sw.be
lftp -e 'mirror --delete --only-newer -X *isos/* /Linux/fedora/epel/5/i386 /opt/repo/epel/5/i386 && exit' http://ftp.riken.jp
 
lftp -e 'mirror --delete --only-newer -X *isos/* /enterprise/5/remi/x86_64 /opt/repo/remi/5/x86_64 && exit' http://rpms.famillecollet.com
lftp -e 'mirror --delete --only-newer -X *isos/* /redhat/el5/en/x86_64/rpmforge /opt/repo/rpmforge/5/x86_64 && exit' http://apt.sw.be
lftp -e 'mirror --delete --only-newer -X *isos/* /Linux/fedora/epel/5/x86_64 /opt/repo/epel/5/x86_64 && exit' http://ftp.riken.jp
 
lftp -e 'mirror --delete --only-newer -X *isos/* /Linux/fedora/epel/5/SRPMS /opt/repo/epel/5/SRPMS && exit' http://ftp.riken.jp

あとGPG-KEYも必要かな?

cd /etc/pki/rpm-gpg/
wget http://apt.sw.be/RPM-GPG-KEY.dag.txt
wget http://rpms.famillecollet.com/RPM-GPG-KEY-remi
wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL
mv RPM-GPG-KEY.dag.txt RPM-GPG-KEY-dag
rpmforgeだけファイル名を変更しておかないと他とちゃうので変な感じになる。 まぁ結局はテキストファイルなのでそのままでも問題ないけどね。ww

あとcreaterepoパッケージも必要かな?

yum install createrepo

リポジトリデータはhttpでアクセスするのでapacheの設定をしておかなくてはいかん
とりあえず/opt/repoをhttp://xxx.xxx.xxx.xxx/repoでアクセスできるようにしてみた。

んでもってcreaterepoでリポジトリ構成情報を作成するのです

createrepo -v /opt/repo/remi/el5/i386
...(snip)
Saving Primary metadata
Saving file lists metadata
Saving other metadata
対象ディレクトリ内にrepodataが作成されて必要なデータが生成される
filelists.xml.gz
other.xml.gz
primary.xml.gz
repomd.xml
って、元々repodataディレクトリは存在していて、ニアリーなファイルが存在している。ww
実はこのまま利用できるんではないだろうか??
使えるやん、これ。って事で先ほどのcreaterepoは不要ッス

この状態で、apache経由でアクセスできるのであればリポジトリとして利用できる。
クライアント側のリポジトリ設定ファイルを作成して実行してみればよい。

cd /etc/yum.repos.d
vi test.repo
[test-repo]
name=This is test repo
baseurl=http://xxx.xxx.xxx.xxx/repo/remi/5/$basearch
enabled=0
一応、enabled=0で無効にしておく
yum --enablerepo=test-repo info php
とかしてみて、test-repoが表示できてかつ、そこからインストールとかできればOK。

簡単でしょ?

GPGKeyでの認証というか確認をすっ飛ばすには.repoファイルにgpgcheck=0の1行を追加すればよろしい。
ここ、ポイントかもです。

統合リポ

先のやり方で作ったリポジトリを全て統合してみようのコーナー。
大丈夫かどうかは自己責任で。

つまり。

  • Webサーバ側で統合リポ公開ポイントを作成
  • epelとremiとrpmforgeのリポジトリデータを一度ローカルに保存
  • rpmファイルのみを統合リポ公開ポイント1か所にまとめる
  • createrepoでリポジトリ情報を作成or更新
  • lftpのミラーリングモードを利用して更新されたファイルだけ保存する
  • lftpのミラーを利用するので一度仮ディレクトリに保存してから統合公開ポイントに移動させる

ってな感じです。

纏めるところは /opt/repo/all/$RELEASEVER/$ARCH としてみた

WINGリポジトリも追加してみた

lftp -e 'mirror --only-newer -X repodata/ -X repoview/ /Linux/fedora/epel/5/i386 /opt/repo/epel/5/i386 && exit' http://ftp.riken.jp
lftp -e 'mirror --only-newer -X repodata/ -X repoview/* /Linux/fedora/epel/5/x86_64 /opt/repo/epel/5/x86_64 && exit' http://ftp.riken.jp
lftp -e 'mirror --only-newer -X repodata/ -X repoview/ /Linux/fedora/epel/5/SRPMS /opt/repo/epel/5/SRPMS && exit' http://ftp.riken.jp
 
cp /opt/repo/epel/5/i386/*.rpm /opt/repo/all/5/i386
cp /opt/repo/epel/5/x86_64/*.rpm /opt/repo/all/5/x86_64
cp /opt/repo/epel/5/SRPMS/*.rpm /opt/repo/all/5/SRPMS
 
 
lftp -e 'mirror --only-newer -X repodata/ -X repoview /redhat/el5/en/i386/rpmforge/RPMS /opt/repo/rpmforge/5/i386 && exit' http://apt.sw.be
lftp -e 'mirror --only-newer -X repodata/ -X repoview /redhat/el5/en/x86_64/rpmforge/RPMS /opt/repo/rpmforge/5/x86_64 && exit' http://apt.sw.be
 
cp /opt/repo/rpmforge/5/i386/*.rpm /opt/repo/all/5/i386
cp /opt/repo/rpmforge/5/x86_64/*.rpm /opt/repo/all/5/x86_64
 
 
lftp -e 'mirror --only-newer -X repodata/ -X repoview /enterprise/5/remi/i386 /opt/repo/remi/5/i386 && exit' http://rpms.famillecollet.com
lftp -e 'mirror --only-newer -X repodata/ -X repoview /enterprise/5/remi/x86_64 /opt/repo/remi/5/x86_64 && exit' http://rpms.famillecollet.com
 
cp /opt/remi/epel/5/i386/*.rpm /opt/repo/all/5/i386
cp /opt/remi/epel/5/x86_64/*.rpm /opt/repo/all/5/x86_64
 
 
lftp -e 'mirror --only-newer -X repodata/ /wing/redhat/el5/i386 /opt/repo/wing/5/i386 && ex
it' http://wing-net.ddo.jp
lftp -e 'mirror --only-newer -X repodata/ /wing/redhat/el5/x86_54 /opt/repo/wing/5/x86_64 && ex
it' http://wing-net.ddo.jp
lftp -e 'mirror --only-newer -X repodata/ /wing/redhat/el5/SRPMS /opt/repo/wing/5/SRPMS && ex
it' http://wing-net.ddo.jp
 
 
cp /opt/repo/wing/5/i386/*.rpm /opt/repo/all/5/i386
cp /opt/repo/wing/5/x86_64/*.rpm /opt/repo/all/5/x86_64
cp /opt/repo/wing/5/SRPMS/*.rpm /opt/repo/all/5/SRPMS
 
 
createrepo /opt/repo/all/5/i386
createrepo /opt/repo/all/5/x86_64
createrepo /opt/repo/all/5/SRPMS