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
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