前回、CentOS 7でyumリポジトリミラーサーバを構築したので、今回は同じくUbuntu Server 14.04上でaptリポジトリミラーサーバを構築してみる。 Ubuntuでは、ミラーサーバ用のパッケージ『apt-mirror』とWebサーバ機能を用いる事で、ミラーサーバを構築することができる。
なお、注意事項としてミラーサーバには大体150GBほどの容量が必要になる。 今回は、こちらとこちらのページを参考にさせていただいた。
1.パッケージインストール
まずは、前提条件となるパッケージをインストールする。 ミラーサーバ側で、以下のコマンドを実行する。
sudo apt-get install apt-mirror apache2
2.設定ファイルの編集
次に、aptリポジトリミラーの設定ファイル「/etc/apt/mirror.list 」を編集し、ミラーリング元のサーバを設定する。 デフォルトの場合、以下のようになっている。
/etc/apt/mirror.list
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
########### end config ##############
deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
上記のように、デフォルトでは本家Ubuntuのリポジトリが記述されている。 今回はデフォルトのままミラーリングを行うが、日本語パッケージリポジトリに関するものを載せる場合は、以下のようにすると良いだろう。
cat /etc/apt/mirror.list
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
########### end config ##############
deb-amd64 http://archive.ubuntulinux.jp/ubuntu trusty main
deb-i386 http://archive.ubuntulinux.jp/ubuntu trusty main
deb-src http://archive.ubuntulinux.jp/ubuntu trusty main
deb-amd64 http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
deb-i386 http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
deb-src http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
clean http://archive.ubuntulinux.jp/ubuntu
clean http://archive.ubuntulinux.jp/ubuntu-ja-non-free
また、ミラーリングの際にダウンロード速度を上げるためなのか、デフォルトの設定だと20プロセスが同時に立ち上がる。 このプロセス数は、上記ファイルの「set nthreads」(12行目)で設定されているので、プロセス数を下げるのであればここで設定すると良いだろう。
3.ミラーリングの開始
さて、それでは実際にミラーリングを行っていこう。 以下のコマンドを実行する。
sudo apt-mirror
ミラーリング完了後、「/var/spool/apt-mirror/mirror/」に同期されたファイルが配置される。 cronなどで定期的に実行することで、リポジトリの状態を最新に保つといいだろう。
次に、apache2でパッケージファイルなどを参照できるよう、以下のコマンドでシンボリックリンクを作成する。
sudo ln -s /var/spool/apt-mirror /var/www/html
4.クライアントの設定
クライアント側の参照先サーバの設定ファイルである「/etc/apt/sources.list」を以下のように編集する。
deb http://ミラーサーバのホスト名・IPアドレス/apt-mirror/ trusty main restricted universe
deb-src http://ミラーサーバのホスト名・IPアドレス/apt-mirror/ trusty main restricted universe
編集後、以下のコマンドを実行し正常に動作することを確認する。
sudo apt-get update