Nightbook

Зеркало репозиториев apt-mirror

Мне потребовалось создать зеркала пакетов для Ubuntu и Debian на одном и том же сервере и казалось бы это не должно было вызвать проблем, но как часто бывает Ubuntu принесла немного пикантности в эту простую настройку. Пост просвещен подводным камням зеркалирования пакетов Ubuntu.

Почему apt-mirror?

Конечно же, проблемы описанные в этой статье относятся к проблемам apt-mirror и не являются глобальными для других утилит. Я выбрал apt-mirror за простоту настройки, использования и распространенность. Возможно я мог упустить что то из виду, в чем я сомневаюсь.

Проблемы

  1. Для архитектуры amd64 придется хранить и ветки i386. Внезапно! Это вызвано мульти-архитектурной настройкой 64-х разрядной версии дистрибутива Ubuntu.
  2. Версии apt-mirror ниже 0.4.9 не хочет получать каталоги с локализациями. На что ругается apt при использовании своего зеркала:

    Failed to fetch http://mirror/debian/dists/wheezy-updates/main/i18n/Translation-en 404 Not Found

Решения

  1. Добавить репозитории с архитектурой i386 и зеркалировать и их тоже.
  2. Установить apt-mirror версии выше или равной 0.4.9. Я брал из Debian Jessi.

Мои настройки зеркал

/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 lang ru
set nthreads     20
set _tilde 0
#
############# end config ##############

deb http://ftp.debian.org/debian/ wheezy main
deb-src http://ftp.debian.org/debian/ wheezy main
deb http://ftp.debian.org/debian/ wheezy-updates main
deb-src http://ftp.debian.org/debian/ wheezy-updates main
deb http://security.debian.org/ wheezy/updates main

deb http://ua.archive.ubuntu.com/ubuntu/ precise universe main restricted multiverse
deb-src http://ua.archive.ubuntu.com/ubuntu/ precise universe main restricted multiverse
deb-i386 http://ua.archive.ubuntu.com/ubuntu/ precise universe main restricted multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-i386 http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse

deb http://mirror.logol.ru/dotdeb/ wheezy all
deb-src http://mirror.logol.ru/dotdeb/ wheezy all

deb http://apt.puppetlabs.com/ wheezy main dependencies
deb http://apt.puppetlabs.com/ precise main dependencies
deb-i386 http://apt.puppetlabs.com/ precise main dependencies

clean http://ftp.debian.org/debian
clean http://security.debian.org/
clean http://ua.archive.ubuntu.com/ubuntu/
clean http://security.ubuntu.com/ubuntu/
clean http://apt.puppetlabs.com/

Я зеркалирую не только репозитории дистрибутивов но и пакеты с проекта dotdeb.org, а так же репозитории Puppet-а с Puppetlabs

/etc/cron.d/apt-mirror

0 */4   * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
0 */5   * * *   apt-mirror      /var/spool/apt-mirror/var/clean.sh > /var/spool/apt-mirror/var/cron.log

/etc/nginx/sites-enabled/mirror

server {
        listen   80;
        server_name  mirror mirror.tr.cslab;
        access_log  off;
        location / {
                root   /srv/mirrors/mirror;
                autoindex on;
        }
}

server {
        listen   80;
        server_name  smirror smirror.tr.cslab;
        access_log  off;
        location / {
                root   /srv/mirrors/smirror;
                autoindex on;
        }
}
server {
        listen   80;
        server_name  dmirror dmirror.tr.cslab;
        access_log  off;
        location / {
                root   /srv/mirrors/dmirror;
                autoindex on;
        }
}
server {
        listen   80;
        server_name  pmirror pmirror.tr.cslab;
        access_log  off;
        location / {
                root   /srv/mirrors/pmirror;
                autoindex on;
        }
}

Копии репозиториев с каталогом /srv/mirrors/ я соединяю символическими ссылками.