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

MySQL 5.5 install on CentOS 6.2

CentOS 6.2 に MySQL 5.5 をインストールしようとしたら, 依存関係があってちょっと悩んだ. 具体的には,postfix などが依存している mysql-libs 5.1 がコンフリクトする. この依存関係をどう解消したものかと調べてみると, remi というリポジトリのものを使っているようだった. ひとまずそれにならってインストールしてみることにする.

  1. epel, remi をインストール
    sudo rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
    sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    
  2. mysql 関連パッケージをアップデート
    sudo yum -y –enablerepo=remi install mysql-server mysql-devel mysql-client
    
  3. mysqld 設定
    sudo chkconfig mysqld on
    sudo service mysqld start
    sudo mysql_secure_installation
    
  4. httpd, phpMyAdmin をインストール
    sudo yum -y install --enablerepo=epel,remi httpd php phpMyAdmin php-mysql
    
  5. phpMyAdmin 設定
    sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
    

参考: