前回、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