apt-mirrorを使ってネットワークインストール可能なレポジトリを作成する

apt-mirrorを使用してネットワークインストール可能なレポジトリを作成しようとしたら、うまくいかずにハマったのでここにまとめておきます。

Ubuntu Preciseのミラーレポジトリを作成します。レポジトリを構築するサーバがrepository.kazu634.lanで名前解決できることが前提です。

例えば仮想マシン上に Ubuntu をインストールするとします。普通にインストールを行うと、jp.archive.ubuntu.org などのレポジトリにアクセスしに行くため、ネットワーク的な負荷がかかります。仮にこれがローカルネットワーク内部で完結すれば、ネットワーク的な負荷がかなり軽減することになります。後、インストールに必要となる時間も短縮出来ます。

Windowsでいうところの、WSUSサーバをイントラネット内部に設置するイメージですかねー

apt-mirrorを使います。

1
# aptitude install apt-mirror

設定ファイルは/etc/apt/mirror.listです。debian-installの設定を追加する必要があります。私の設定はこのようになりました:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
############# config ##################
#
set base_path    /share/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 precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse

# debian installer here
deb http://archive.ubuntu.com/ubuntu precise main/debian-installer restricted/debian-installer

deb-src http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse

clean http://archive.ubuntu.com/ubuntu

私の場合デフォルトのミラー作成先 (/var/spool/apt-mirror) から変更 (/share/apt-mirror)したかったため、以下のコマンドを実行しています。

1
# sudo cp -pr /var/spool/apt-mirror/ /share/

レポジトリを公開するためには、HTTPでインデックスを表示できなければいけません。私は以下の設定を実施しています:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server {
    listen   80;

    root /share/apt-mirror/mirror/archive.ubuntu.com;
    index index.html index.htm;

    server_name repository.kazu634.lan;

    access_log  /var/log/nginx/repository.kazu634.lan.access.log;
    error_log   /var/log/nginx/repository.kazu634.lan.error.log;

    autoindex on;
    gzip on;
}

autoindexをonにするのがポイントです。

以下の設定ファイルを更新します。コメントアウトを外して、cronの書式で好きな頻度で実行できるようにしてください。

1
2
3
4
#
# Regular cron jobs for the apt-mirror package
#
0 4	* * *	apt-mirror	/usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log