CentOS の rpm local mirror を作る

外部ネットワークとは隔離された環境にいろいろ作る時のために,同じくだいぶ前から欲しいと思っていた rpm ファイルの local mirror も作ることにしました.

…と言っても,調べてみたら作業自体はえらく簡単でした.こんなならもっと早くやっておけばよかった…^^;

流れとしては「rsync で全ファイルを取得」「ディレクトリを httpd から見えるように設定」「ダウンロード先を local mirror に向ける」だけです.

rsync で全ファイルを取得

centos.org にある Mirror List から rsync をサポートしているホストを選び,近そうなところからダウンロードする.

今回は IIJ の rsync ミラーを使うことにした.

例えば下記のようなスクリプトで,rsync を使って必要なファイルを取得.

#!/bin/sh
for ver in 5.9 6.3
do
  rsync -avSHP --verbose --delete \
    --exclude "centosplus" \
    --exclude "local*" \
    --exclude "cr" \
    --exclude "fasttrack" \
    --exclude "isos" \
    rsync://ftp.iij.ad.jp/pub/linux/centos/$ver/ \
    ~/mirror/$ver/
done
exit 0

ファイルサイズはそれぞれこんな感じになった.6.3 の updates がけっこう大きいなぁ.

$ du -hs 5.9/*
84K     5.9/addons
346M    5.9/centosplus
84K     5.9/contrib
243M    5.9/extras
8.6G    5.9/os
1.2G    5.9/updates

$ du -hs 6.3/*
7.9G    6.3/centosplus
84K     6.3/contrib
29M     6.3/extras
8.7G    6.3/os
34G     6.3/updates

ディレクトリを公開

apache を設定.Options +Indexes は必要ない?かもしれないけど,あったほうが便利なので.

<VirtualHost *:80>
    ServerAdmin email@example.com
    ServerName centos-mirror.example.com
    DocumentRoot /your/mirror/dir
    ErrorLog logs/centos-mirror-error_log
    CustomLog logs/centos-mirror-access_log common
    <Directory /your/mirror/dir>
        Options +Indexes
    </Directory>
</VirtualHost>

ダウンロード先を local mirror にする

/etc/yum.repos.d/CentOS-Base.repo ファイルを書き換える.mirrorlist= 行をコメントアウトして,baseurl= 行を今回作ったサーバに向ける.

apache で設定したパスがたどれるように.ホスト名だけ書き換えたら見えるようにした方が楽でよさそうなので,/centos 以下に見えるように設定した.

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

簡単!

Linux で IPv6 設定

毎回忘れて設定ファイルや起動スクリプトを見ることになるので,メモっておく^^;.

CentOS の場合

/etc/sysconfig/networkNETWORKING_IPV6=yes を追加. 手動設定の場合,必要に応じて IPV6_DEFAULTDEV, IPV6_DEFAULTGW も追加.

NETWORKING_IPV6="yes"
#IPV6_DEFAULTDEV=eth0
#IPV6_DEFAULTGW=fe80::1

/etc/sysconfig/network-scripts/ifcfg-if名IPV6INIT=yes を追加. IPV6_AUTOCONF などは環境に応じて適当に.

IPV6INIT="yes"
IPV6_AUTOCONF="yes"        # RA で自動設定
#DHCPV6C="yes"             # DHCPv6 で自動設定
#IPV6ADDR="2001:db8::123"  # 手動設定

ubuntu の場合

/etc/network/interfaces に IPv6 用の設定を追加.

auto eth0
iface eth0 inet6 auto      # RA で自動設定
#iface eth0 inet6 dhcp     # DHCPv6 で自動設定
#iface eth0 inet6 static   # 手動設定
#  address 2001:db8::123
#  netmask 64
## gateway 2001:db8::1

Ubuntu Linux のカーネルイメージ掃除

Ubuntu Linux で単に aptitude update / upgrade していると,Kernel image が貯まっていって /boot が溢れる.それの掃除方法メモ.

まずは dpkg コマンドでカーネルのリストを取得.

% dpkg -l | grep linux-image
ii  linux-image-3.2.0-35-generic         3.2.0-35.55  ...
ii  linux-image-3.2.0-38-generic         3.2.0-38.60  ...
ii  linux-image-server                   3.2.0.38.46  ...

必要ないカーネルを削除する.

% sudo aptitude remove --purge linux-image-3.2.0-35-generic
% sudo dpkg --purge linux-image-3.2.0-35-generic

そういえば,私はいつも aptitude コマンドの方を使ってるんだけど,apt-get, apt-cache とどっちがいいのかな? どちらも同じ?