○ yumでローカルrepo

・ローカルにupdate用のミラーサイトを作ります
・yum実行時にアクセスできるサーバならどこでも良いです
・実行例はanonymous接続できるFTPサーバを使っています
・CR.repoは次期バージョンまでのつなぎ的なものです
・CentOS 6.x の場合です

◯yum関連パッケージのインストール

[sola@saturn:~]
$ su -
passwd:
[root@saturn:~]
# yum install yum-plugin-fastestmirror
# yum install yum-plugin-priorities
# yum install yum-utils
# yum install createrepo

・extrasが有効の場合

# yum install centos-release-cr
# yum install epel-release

◯FTPサーバに専用ディレクトリを作ります

・FTPでanonymous接続できるディレクトリに作成します
・CentOSのupdate,cr用、自前のrpm用のディレクトリを作成

[root@saturn:~]
# mkdir -p /home/ftp/centos/6/updates
# mkdir -p /home/ftp/centos/6/cr
# mkdir -p /home/ftp/rpm

◯ファイルをコピーします

・rsyncコマンドで外部のミラーサーバと同期させます
・CentOSサイトのMirrorListからrsync可能なサイトを探します
・例 rsync://ftp.kddilabs.jp (rsync://ftp.ne.jp)
・drpmsディレクトリの中身を除いています

# rsync -avH rsync://ftp.ne.jp/centos/6/updates/i386 --exclude="drpms/*" --delete /home/ftp/centos/6/updates/
# rsync -avH rsync://ftp.ne.jp/centos/6/cr/i386 --exclude="drpms/*" --delete /home/ftp/centos/6/cr/

・自前のrpmパッケージを該当ディレクトリにコピーします (省略)

◯<repodata>を作成します

・CentOSのupdate,cr用<repodata>はrsyncしたものを使用します
・ディレクトリの構成がミラーサーバとローカルで異なる場合は
・ファイルの更新ごとに<repodata>を作成します

[root@saturn:~]
# createrepo /home/ftp/rpm

◯設定ファイルの修正と新規作成

:/etc/yum.conf

・kernelのアップデートで、古いのを残す個数を設定します
・デフォルトは 0 CentOS6.xの設定値は 5 個人的に 3

・省略

# installonly_limit = 5
installonly_limit = 3

・省略

:/etc/yum/pluginconf.d/fastestmirror.conf

・ミラーサーバを日本と近隣に限定(必須ではない)

[main]

・省略

#include_only=.nl,.de,.uk,.ie
include_only=.jp

・特定のミラーサイトを参照する場合

#include_only=.jp
prefer=www.ftp.ne.jp

・日本のミラーサーバ

ftp.tsukuba.wide.ad.jp
ftp.iij.ad.jp
mirror.fairway.ne.jp
ftp.riken.jp
ftp.nara.wide.ad.jp
www.ftp.ne.jp
ftp.jaist.ac.jp

:/etc/yum/pluginconf.d/priorities.conf

[main]
enabled = 1

:/etc/yum.repos.d/CentOS-Base.repo

・priorityで優先度を指定します
・ローカルの優先度を上位にします

・省略

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=3

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2
exclude=kernel*

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=3

・省略

:/etc/yum.repos.d/CentOS-CR.repo

・mirrorlistが使えるようです
・priorityで優先度を指定します
・ローカルの優先度を上位にします

[cr]
name=CentOS-$releasever - CR
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cr
#baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2
exclude=kernel*

:/etc/yum.repos.d/epel.repo

・通常は無効で使用します
・priorityで優先度を指定します
・ローカルの優先度を上位にします

・省略

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=3

・省略

:/etc/yum.repos.d/Local.repo

・priorityで優先度を指定します
・ローカルの優先度を上位にします
・baseurlにローカルのFTPサーバを指定します
・名前解決できない場合は、IPアドレスで指定します
・gpg署名をしていない場合、gpgcheckを無効にします

[Local]
name=local - selfpkg
baseurl=ftp://saturn.528p.com/rpm/
gpgcheck=0
enabled=0

[Lupdates]
name=CentOS-$releasever - Lupdates
baseurl=ftp://saturn.528p.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
exclude=kernel*

[Lcr]
name=CentOS-$releasever - Lcr
baseurl=ftp://saturn.528p.com/centos/$releasever/cr/$basearch/
gpgcheck=1
#enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
exclude=kernel*

・cronで定期的にrsyncやupdateもできますが
・クライアントマシンで実証してからupdateをかけています

・yum updateの実行
・設定を変更したら、最初に"yum clean all"を実行します
・--disableexcludesでrepoを指定してkenelを最後にupdateします

[root@saturn:~]
# yum clean all
# yum check-update
# yum update
# yum update --disableexcludes=Lupdates

・または (allで全てのrepoのexcludeを除く)

# yum update --disableexcludes=all

・Localのupdateの場合 (Local.repoのみ有効にする)

# yum --disablerepo=\* --enablerepo=Local update

◯GnomePackageKit(gpk)との関係

・GUI環境ではgpk-repoコマンドでrepoの有効・無効が設定できます
・repo設定の"name"の部分が設定画面で表示されます
・無効にした場合repoの設定に"enable = 0"が追記されます

gtkrepoの設定

・ミラーサイトの更新を優先してgpk-update-iconで通知したい場合
・ローカルを無効にしておきupdateのときに有効にします
・priorityの設定でローカルが優先されます

[root@mars:~]
# yum update --enablerepo=Lupdates
# yum update --enablerepo=Lupdates --disableexcludes=all

・clean allを実行する場合は

[root@mars:~]
# yum clean all --enablerepo=Lupdates

○ Copyright(c) 528p.com All Rights Reserved.