Зеркало репозиториев apt-mirror
Мне потребовалось создать зеркала пакетов для Ubuntu и Debian на одном и том же сервере и казалось бы это не должно было вызвать проблем, но как часто бывает Ubuntu принесла немного пикантности в эту простую настройку. Пост просвещен подводным камням зеркалирования пакетов Ubuntu.
Почему apt-mirror?
Конечно же, проблемы описанные в этой статье относятся к проблемам apt-mirror и не являются глобальными для других утилит. Я выбрал apt-mirror за простоту настройки, использования и распространенность. Возможно я мог упустить что то из виду, в чем я сомневаюсь.
Проблемы
- Для архитектуры amd64 придется хранить и ветки i386. Внезапно! Это вызвано мульти-архитектурной настройкой 64-х разрядной версии дистрибутива Ubuntu.
-
Версии apt-mirror ниже 0.4.9 не хочет получать каталоги с локализациями. На что ругается apt при использовании своего зеркала:
Failed to fetch http://mirror/debian/dists/wheezy-updates/main/i18n/Translation-en 404 Not Found
Решения
- Добавить репозитории с архитектурой i386 и зеркалировать и их тоже.
- Установить 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/ я соединяю символическими ссылками.