Гид по технологиям

Локальное зеркало apt: настройка и обслуживание

• 5 min read • Linux • Обновлено 19 Nov 2025
Локальное зеркало apt: настройка и обслуживание
Локальное зеркало apt: настройка и обслуживание

5 Создание локальных репозиториев

После того как apt-mirror настроен, запустите его впервые, чтобы скачать все пакеты для локальных репозиториев Debian и Ubuntu. Выполните под пользователем apt-mirror:

su - apt-mirror -c apt-mirror

apt-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», когда релизы меняются.

Важно: адаптируйте примеры путей и имён зеркал под вашу инфраструктуру и требования безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро