Home

技術系のメモと日々の雑感

yum のリポジトリをローカルに作る

yum のリポジトリをローカルに作るために色々と情報を漁ってみたけど、必要な手順だけの最短コースをまとめたものが見つけられなかったので、ざっと書いておくことにする。
環境は CentOS 5.2。
ローカルのリポジトリだけで yum update できる環境がゴールだ。
トライ&エラーで手順をまとめただけだから、勘違いや間違いがあるかもしれないので、これを見て試す人はご注意を。


リポジトリを置くサーバ側
まずは下準備として必要なパッケージをインストールして、リポジトリを置くディレクトリを作る。

# yum -y install createrepo yum-utils
# cd /usr/local/apache/htdocs
# mkdir -p repos/centos/5/os
# mkdir -p repos/centos/5/i386

os が base リポジトリ用、i386 が updates 等のリポジトリ用だ。
base リポジトリは(DVDとかの)いわゆるインストールイメージなので、ダウンロードするか、手元にあるメディアからコピーすればいい。
容量が大きいから、ミラーサイトに負担をかけないように、なるべくメディアからコピーしよう。

# cd /usr/local/apache/htdocs/repos/centos/5/os
# rsync -av rsync://ftp.riken.jp/centos/5/os/i386/ .

updates リポジトリに comps.xml が必要なのでコピーする。

# cd ../i386
# cp ../os/repodata/comps.xml .

/etc/yum.repos.d/CentOS-Base.repo を修正する。
※以下は必要な部分のみの例、長い行が折り返されていることがあるので注意

[base]
name=CentOS-$releasever - Base
baseurl=http://localhost/repos/centos/5/os
gpgcheck=0

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://localhost/repos/centos/5/os/RPM-GPG-KEY-CentOS-5

updates リポジトリをミラーサイトの最新の状態と同期させる。

# cd /usr/local/apache/htdocs/repos/centos/5/i386
# reposync -r updates -n -t /var/cache/yum
# createrepo .

これでリポジトリはできあがり。
ちなみに、この3行をシェルスクリプトにして cron に登録しておくと updates リポジトリを最新に保つことが可能だ。
あとは他のホストから参照できるようにすればサーバ側の設定は終わり。
一応書いておくと、HTTP で公開する場合は Apache に次のような設定を追加すればいい。

<VirtualHost *:80>
    ServerAdmin webmaster@repo.example.com
    DocumentRoot /usr/local/apache/htdocs
    ServerName repo.example.com
    ErrorLog logs/repo.example.com-error_log
    CustomLog logs/repo.example.com-access_log common
</VirtualHost>


リポジトリを参照するホスト側
こっちは簡単。
/etc/yum.repos.d/CentOS-Base.repo を次のように修正するだけだ。
※以下は必要な部分のみの例

[base]
name=CentOS-$releasever - Base
baseurl=http://repo.example.com/repos/centos/5/os
gpgcheck=0

[updates]
name=CentOS-$releasever - Updates
baseurl=http://repo.example.com/repos/centos/5/i386
gpgcheck=0

ローカルにあるリポジトリしか参照しないので、速度が稼げるかと思って gpgcheck=0 に変えたけど効果あるのかな。

さて、これで yum update を実行してエラーが出なければ終わりだ。
何かうまくいかないときは、yum repolist とか yum check-update を試してみると原因が掴めることもある。
あと、キャッシュが悪さをすることがあるので yum clean all すると動きが変わるかもしれない。
以上、さらっと書いたけど、実は環境を作るのに丸1日かかってしまった。
やっぱリポジトリ関係って情報が少ないね。
この手順が誰かの役に立つといいな。

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/10(火) 03:01:45

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/09(月) 12:08:27

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/04(水) 20:17:49

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/29(金) 09:29:23

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/11(月) 15:23:57

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 07:11:23

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 16:57:37

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/04(月) 16:21:45

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 05:21:13

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 01:13:00

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 16:48:36

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 00:49:11

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/31(木) 22:23:14

-

管理人の承認後に表示されます

  • From: |
  • 2013/09/11(水) 20:00:38

-

管理人の承認後に表示されます

  • From: |
  • 2013/07/06(土) 23:45:38

-

管理人の承認後に表示されます

  • From: |
  • 2013/04/15(月) 06:34:24

-

管理人の承認後に表示されます

  • From: |
  • 2012/06/25(月) 02:24:57

-

管理人の承認後に表示されます

  • From: |
  • 2012/02/23(木) 15:16:16

-

管理人の承認後に表示されます

  • From: |
  • 2011/04/01(金) 15:02:29

-

管理人の承認後に表示されます

  • From: |
  • 2011/02/25(金) 14:00:39

この記事に対するコメント

承認待ちコメント

このコメントは管理者の承認待ちです

  • 投稿者: -
  • 2013/06/14 10:06:14
  • [編集]

この記事にコメントする

管理者にだけ表示を許可する