リポジトリ
リポジトリはバージョン管理システムが管理しているデータや情報が保管されている場所やデータベースの事。
リポジトリのコピーサイトを作る
稼働サーバが増えたりインストールとかをいっぱいするとネット上にあるリポジトリに常にアクセスが発生する。 ネットワークトラフィックって馬鹿にできないよね。 なので、ローカルにリポジトリのコピーを作ってしまおうプロジェクト。 これによって、ある瞬間のリポジトリデータを保持し続ける事も可能になるしね。
条件としてリポジトリ保存ディレクトリを/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-dagrpmforgeだけファイル名を変更しておかないと他とちゃうので変な感じになる。 まぁ結局はテキストファイルなのでそのままでも問題ないけどね。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