Локальное зеркало apt: настройка и обслуживание
5 Создание локальных репозиториев
После того как apt-mirror настроен, запустите его впервые, чтобы скачать все пакеты для локальных репозиториев Debian и Ubuntu. Выполните под пользователем apt-mirror:
su - apt-mirror -c apt-mirrorapt-mirror подскажет, сколько гигабайт нужно скачать. Это может занять несколько часов — будьте терпеливы. Пакеты будут сохранены в поддиректориях каталога /var/spool/apt-mirror/mirror, поэтому убедитесь, что раздел, где расположен этот каталог, содержит достаточно свободного места.
Директории примера (в вашем случае пути могут отличаться, если использованы другие зеркала):
- Debian: /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian
- Ubuntu: /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu
Важно: если вы указали другие зеркала в конфигурации (см. главу 4 исходного руководства), соответствующие пути будут отличаться.
6 Очистка локальных репозиториев
После завершения загрузки apt-mirror предложит освободить место с помощью скрипта очистки: /var/spool/apt-mirror/var/clean.sh. Запустите его так:
/bin/bash /var/spool/apt-mirror/var/clean.shОжидаемый вывод выглядит примерно так:
server1:~# /bin/bash /var/spool/apt-mirror/var/clean.sh
Removing 157 unnecessary files [13316096 bytes]...
[0%]................done.
Removing 18 unnecessary directories...
[0%]..................done.Как видно, освобождаются мегабайты или больше в зависимости от того, что было временно создано в процессе зеркалирования.
Важно:
- Скрипт удаляет только файлы, помеченные apt-mirror как ненужные. Перед удалением критичных данных сделайте резервную копию, если не уверены.
- Запускать clean.sh имеет смысл после полной первоначальной синхронизации и периодически — например, после обновлений.
7 Обновление локальных репозиториев и ежедневная cron‑задача
Чтобы обновить зеркало вручную, просто повторно запустите ту же команду:
su - apt-mirror -c apt-mirrorЕсли обновления должны происходить автоматически, задайте ежедневную cron‑задачу. Отредактируйте файл /etc/cron.d/apt-mirror и раскомментируйте (или добавьте) строку, чтобы получить запуск в 04:00 каждый день. Пример редактирования:
vi /etc/cron.d/apt-mirrorСодержимое файла должно содержать строку типа:
#
# Regular cron jobs for the apt-mirror package
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.logЭто запустит apt-mirror в 04:00 и будет логировать вывод в /var/spool/apt-mirror/var/cron.log.
Советы по cron:
- Убедитесь, что в crontab доступен путь /usr/bin/apt-mirror и что пользователь apt-mirror существует.
- Проверьте права и переменные окружения: cron запускает процесс в ограниченной среде. Если скрипт использует нестандартные переменные, явно задайте их в файле cron.
- Следите за размером cron.log, настройте ротацию логов (logrotate) при необходимости.
8 Доступ к зеркалам по HTTP
По умолчанию корень документа Apache в Debian/Ubuntu — /var/www, а зеркало хранится в /var/spool/apt-mirror/mirror. Чтобы сделать репозитории доступными по URL вида http://192.168.0.100/debian и http://192.168.0.100/ubuntu (192.168.0.100 — IP вашего сервера), создайте символические ссылки в /var/www:
ln -s /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian /var/www/debian
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntuНе забудьте скорректировать команды, если вы зеркалируете другие хосты вместо ftp.de.debian.org или de.archive.ubuntu.com.
Особенности веток дистрибутивов:
В Debian известен случай, когда релиз имеет «кодовое» имя (например, sarge) и символьную метку stable. В каталоге dists может быть только директория sarge, тогда как установки и /etc/apt/sources.list могут ссылаться на stable. Чтобы избежать проблем, создайте симлинк stable, указывающий на sarge:
cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
ln -s sarge/ stableПри переходе на новый стабильный релиз (например, etch становится stable) обновите симлинк:
cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
rm -f stable
ln -s etch/ stableВ Ubuntu такой проблемы обычно нет: имена релизов (breezy, dapper, edgy и т. п.) используются напрямую.
Примечание по безопасности и доступу:
- Если сервер обслуживает сеть, убедитесь, что firewall разрешает HTTP (обычно tcp/80). Если используется HTTPS, настройте SSL и корректные сертификаты.
- Проверьте права доступа: веб‑сервер должен иметь права на чтение по ссылкам; сам каталог зеркала должен быть доступен для чтения пользователем веб‑сервера.
Проверка работоспособности и отладка
Быстрая проверка доступности по HTTP:
curl -I http://192.168.0.100/debian/distsЕсли вы видите HTTP/1.1 200 OK, значит публикация прошла успешно. Также проверьте, что apt на клиенте может обновить кэш из локального зеркала — добавьте в /etc/apt/sources.list строку, например:
deb http://192.168.0.100/debian sarge main contrib non-freeЗатем на клиенте выполните:
sudo apt-get updateЕсли apt-get update завершился без ошибок — зеркало работает корректно.
Типичные ошибки и их исправления:
- Недостаточно места на диске: проверьте df -h и расширьте раздел или переместите зеркало на другой диск.
- Неправильные права: убедитесь, что веб‑сервер и пользователь apt-mirror имеют доступ к файлам.
- Cron не запускает apt-mirror: проверьте формат строки в /etc/cron.d/apt-mirror и права на выполнение /usr/bin/apt-mirror.
- Клиент запрашивает stable, а в зеркале только codename: создайте симлинк stable → codename.
Критерии приёмки
- Все заявленные пакеты скачаны и присутствуют в /var/spool/apt-mirror/mirror.
- Скрипт clean.sh завершился без ошибок и освободил место.
- Автоматическое обновление выполняется ежедневно, это видно в /var/spool/apt-mirror/var/cron.log.
- Публикация по HTTP успешна: curl возвращает 200, а apt-get update на клиенте проходит.
Чек-листы для ролей
Администратор (настройка и безопасность):
- Убедиться в достаточном дисковом пространстве и резервном копировании.
- Настроить HTTPS, если зеркало доступно в общественной сети.
- Настроить ротацию логов и мониторинг свободного места.
- Проверить права доступа и ограничения Apache/nginx.
Оператора (ежедневные задачи):
- Проверить cron.log на наличие ошибок.
- Запустить apt-mirror вручную при необходимости и просмотреть вывод.
- При смене стабильной ветки обновить симлинк stable.
Быстрый набор команд (cheat sheet)
- Запустить зеркало вручную:
su - apt-mirror -c apt-mirror- Очистить временные файлы:
/bin/bash /var/spool/apt-mirror/var/clean.sh- Создать симлинки для веб‑публикации:
ln -s /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian /var/www/debian
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu- Создать/обновить stable → codename:
cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
rm -f stable
ln -s etch/ stableЧастые ошибки и когда этот подход не срабатывает
Когда локальное зеркало может оказаться неэффективным:
- Очень маленькая сеть или единичный сервер: затраты на хранение зеркала выше пользы.
- Если вам нужны только несколько пакетов, удобнее использовать apt-cacher или proxy‑решение.
- Если необходимы мгновенные обновления пакетов для CI/CD, зеркалирование полного дистрибутива может быть избыточным.
Альтернативы:
- apt-cacher-ng — экономит трафик, кэшируя запрошенные пакеты по запросу клиентов.
- rsync/aptly/fpm — для более тонкой подготовки и инкрементальных зеркал.
Вывод
Локальное зеркало apt с помощью apt-mirror — надежный способ уменьшить внешнюю нагрузку и ускорить развёртывание систем внутри сети. Основные шаги: первичная синхронизация, очистка временных файлов, настройка cron и публикация по HTTP. Следите за дисковым пространством и правами доступа, тестируйте обновления на клиентах и обновляйте симлинки для «stable», когда релизы меняются.
Важно: адаптируйте примеры путей и имён зеркал под вашу инфраструктуру и требования безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента