OS付属のrpmでローカルyumリポジトリを作ったり

F/Wで全てのポートを閉ざされた世界の中でパッケージ管理したいんですが、rpmしこしこやってると依存関係に吐きそうになってきました。

そこでOS付属の標準rpm達のリポジトリをローカルに作ってしまおうと思いましてやってみましたという話。

リポジトリのパスは

/usr/local/repository/

でOSはCentOS4という事にします。


準備
まずは何はなくともrpm達を用意します。

まずOSのisoからローカルにコピー

mount -t iso9660 -o loop /usr/local/src/CentOS-4.7-i386-binDVD.iso /mnt/iso/
cp -p /mnt/iso/CentOS/RPMS/*.rpm /usr/local/repository/

そしてこれだけは手作業でinstallしなくてはならないcreaterepoをinstallします。
http://dag.wieers.com/rpm/packages/createrepo/

wget http://dag.wieers.com/rpm/packages/createrepo/createrepo-0.4.6-1.el4.rf.noarch.rpm
rpm -ihv createrepo-0.4.6-1.el4.rf.noarch.rpm

そして先ほどのrpm群をリポジトリ化。

createrepo /usr/local/repository/

そして以下のファイルを作り設定を追加します。

/etc/yum.repos.d/local.repo
[local]
name=local - file
baseurl=file:///usr/local/repository/
gpgcheck=0
enabled=1

そして共通設定ファイルにenabled=0を追加して他のリポジトリを無効化します。

vim /etc/yum.conf
enabled=0

他に/etc/yum.repos.d/以下にenabled=1の設定が有る場合そちらもenabled=0にしておきます。
※有効なリポジトリが有る場合はそちらへもリクエストが飛んでしまうのでポートが閉じられていた場合は詰まってしまう恐れ有りです。

これでめでたく有効なリポジトリはlocalだけとなりました。

とりあえずHTTPとFTPのポートを閉じてみます。

iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A OUTPUT -p tcp --dport 20 -j DROP
iptables -A OUTPUT -p tcp --dport 21 -j DROP
service iptables start

いざインストール
では実行前にキャッシュを消しておきます。

rm -rf /var/cache/yum/*

さぁ快適なyum生活!!と思いきや↓とかいきなりやってもどっかで詰まってしまいました・・・orz

yum search zsh

他のリポジトリは全部enable=0にしたんでおkかと思ったんですがそうではないのかしら・・・?

ともあれ--enablerepoオプションをつければ何とかなりました。

yum --enablerepo=local install zsh

まぁupdateとか出来ないんで微妙なんですけどもね・・・。
OSがupdateされたら都度持ってきたりすれば良いんですかねぇ。

参考URL
http://www.proustcafe.com/2006/01/createrepoyum.html
http://wiki.poyo.jp/read/Writing/fc-expert/making_rpm/100.make_repository
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/795tmprepo.html