Как создать локальный зеркальный репозиторий Debian/Ubuntu с помощью apt-mirror
Создайте локальное зеркало пакетов Debian/Ubuntu с apt-mirror, чтобы ускорить установки по LAN и сэкономить интернет‑трафик. Установите apt-mirror и Apache, настройте /etc/apt/mirror.list, выполните apt-mirror для первоначального скачивания, создайте символические ссылки в /var/www и запланируйте периодическое обновление через cron. Этот руководящий пример не зеркалит security-обновления — их рекомендуется получать напрямую.
Введение
Это руководство показывает, как создать зеркало Debian/Ubuntu для локальной сети с помощью утилиты apt-mirror. Локальное зеркало полезно, если в сети требуется установка множества систем: пакеты будут скачиваться по быстрому LAN, что экономит интернет‑канал.
Важно: это не единственный способ настройки зеркала. Автор не даёт гарантии, что шаги сработают в вашей среде. Примеры сделаны для Debian Sarge и Ubuntu Edgy Eft; для других релизов потребуется незначительная адаптация.
Факты из примера:
- Локальный адрес примера: 192.168.0.100
- В примерах зеркалировались секции main/contrib/non-free (Debian) и main/restricted/universe (Ubuntu). В моих тестах это заняло ~25 GB диска и около 6 часов на 16 Mbit DSL.
Примечание: в этом руководстве я не зеркалю security‑репозитории — рекомендуется получать security‑обновления напрямую из интернета, чтобы быть уверенным в своевременном получении патчей.
Предварительная заметка
Копировать репозитории можно как с Debian-, так и с Ubuntu‑систем. Debian может содержать зеркала Debian и Ubuntu, и наоборот. Вам понадобится быстрый интернет для первоначального скачивания и достаточно места на диске для хранения репозиториев.
Если вы используете другие версии Debian/Ubuntu, замените названия релизов (sarge → etch/sid, edgy → dapper/breezy и т.д.). Также выбирайте зеркала, ближайшие к вам по географии (de → us и т. п.).
1 Установка apt-mirror
1.1 Изменение /etc/apt/sources.list (только для Debian Sarge)
Если вы на Debian Sarge, перед установкой apt-mirror добавьте репозиторий apt-mirror в /etc/apt/sources.list. На Etch или Sid это, возможно, не требуется; для Ubuntu Edgy Eft этот шаг не нужен.
Откройте файл:
vi /etc/apt/sources.listДобавьте строку:
[...]
deb http://apt-mirror.sourceforge.net/ apt-mirror/
[...]Обновите индекс пакетов:
apt-get update1.2 Установка apt-mirror
Для всех систем (Debian и Ubuntu) установите пакет:
apt-get install apt-mirror2 Установка Apache
Я хочу отдавать зеркало по HTTP, поэтому устанавливаю Apache:
apt-get install apache2Домен по умолчанию используют каталог /var/www. Позже мы создадим символические ссылки из /var/www на местоположение локальных репозиториев.
3 Настройка /etc/apt/mirror.list
Файл конфигурации apt-mirror: /etc/apt/mirror.list. В нём перечисляются репозитории для зеркалирования и некоторые параметры.
Ниже — пример, как выглядит файл на Debian Sarge (примеры из исходного материала):
# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#
# 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 defaultarch
# set nthreads 20
#
##
## Example sources
##
# sarge's section
deb http://ftp.fi.debian.org/debian sarge main contrib non-free
deb-src http://ftp.fi.debian.org/debian sarge main contrib non-free
deb http://security.debian.org/debian-security sarge/updates main contrib non-free
deb-src http://security.debian.org/debian-security sarge/updates main contrib non-free
deb http://ftp.fi.debian.org/debian sarge main/debian-installer
# sarge-proposed-updates's section
deb http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free
deb-src http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free
# sid's section
deb http://ftp.fi.debian.org/debian sid main contrib non-free
deb-src http://ftp.fi.debian.org/debian sid main contrib non-free
deb http://ftp.fi.debian.org/debian sid main/debian-installer
# experimental section
deb http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free
deb-src http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free
##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#
# Cleaning section
clean http://security.debian.org/
clean http://ftp.fi.debian.org/
skip-clean http://ftp.fi.debian.org/doc/
skip-clean http://ftp.fi.debian.org/tools/
skip-clean http://ftp.fi.debian.org/debian-cd/
skip-clean http://ftp.fi.debian.org/debian-minicd/
skip-clean http://ftp.fi.debian.org/debian/dists/sarge/main/installer-i386/
skip-clean http://ftp.fi.debian.org/debian/dists/sid/main/installer-i386/
skip-clean http://ftp.fi.debian.org/debian/doc/
skip-clean http://ftp.fi.debian.org/debian/tools/
skip-clean http://ftp.fi.debian.org/debian/project/
skip-clean http://ftp.fi.debian.org/debian-non-US/project/Аналогичный пример для Ubuntu Edgy Eft из исходного руководства:
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
# 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
set nthreads 20
set tilde 0
#
############# end config ##############
deb http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntuПример моего /etc/apt/mirror.list
В моём примере я зеркалю только бинарные секции (не deb-src) и не зеркалю security. Файл выглядит так:
vi /etc/apt/mirror.list# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#
# 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 defaultarch
# set nthreads 20
#
##
## Example sources
##
# sarge's section
deb http://ftp.de.debian.org/debian sarge main contrib non-free
# Ubuntu Edgy Eft
deb http://de.archive.ubuntu.com/ubuntu/ edgy main restricted universe
##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#
# Cleaning section
clean http://ftp.de.debian.org/
clean http://de.archive.ubuntu.com/Обратите внимание: я использовал ftp.de.debian.org и de.archive.ubuntu.com — выбирайте зеркала, близкие к вам (us, ru и т.д.).
Строки clean указывают каталоги локального зеркала, в которых apt-mirror будет искать устаревшие файлы для удаления.
4 Первичное зеркалирование и проверка
После настройки запустите:
apt-mirrorПроцесс может занять много времени и трафика. Первичная синхронизация скачивает все указанные пакеты.
Логи и временные файлы находятся в базовом каталоге, обычно /var/spool/apt-mirror. В нём вы увидите структуру mirror/<хост>/<путь>.
После успешного завершения зеркала, создайте символические ссылки в корне веб‑сервера, чтобы клиенты могли получить доступ к репозиториям:
# пример: для Debian
ln -s /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian /var/www/debian
# пример: для Ubuntu
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntuУбедитесь, что права доступа корректны, чтобы Apache мог читать файлы:
chown -R www-data:www-data /var/spool/apt-mirror/mirror
chmod -R o+r /var/spool/apt-mirror/mirror(adjust user/group if your system uses другой пользователь для Apache)
Теперь на клиентских машинах можно прописать в /etc/apt/sources.list строки, указывающие на ваше зеркало, например:
deb http://192.168.0.100/debian sarge main contrib non-free
deb http://192.168.0.100/ubuntu edgy main restricted universeЗатем проверьте обновление на клиенте:
apt-get update
apt-get upgrade5 Плановое обновление и автоматизация
Рекомендуется запланировать регулярную задачу для обновления зеркала (например, ежедневно ночью). Пример crontab для root:
# Запуск apt-mirror каждый день в 3:00, лог в var
0 3 * * * /usr/bin/apt-mirror > /var/spool/apt-mirror/var/apt-mirror.log 2>&1Можно дополнительно настроить rotate для логов и мониторинг свободного места на диске.
Важное
- Не зеркальте source (deb-src), если вы не собираетесь собирать пакеты — они занимают много места.
- Security‑репозитории обычно оставляют «живыми» через интернет, чтобы получать критичные обновления своевременно.
Отладка и типичные проблемы
- Недостаточно места на диске → остановка скачивания. Решение: добавить диск или исключать некоторые секции.
- Ошибки прав доступа → убедиться, что Apache читает каталог зеркала (www-data или apache).
- Неправильные URL в mirror.list → проверьте, что вы скопировали корректные адреса (без опечаток).
- apt-mirror зависает / медленно работает → проверьте сетевую пропускную способность и количество потоков (параметр nthreads).
Альтернативные подходы
- apt-cacher-ng: кэширование пакетов по требованию (подходит, когда не нужно полное зеркало и важен экономный диск).
- reprepro / debmirror: альтернативные инструменты для создания локальных репозиториев с более тонким контролем.
- rsync от официальных зеркал (если зеркало предоставляет rsync) — часто быстрее для полного зеркалирования.
Выбор зависит от цели: полное оффлайн‑зеркало (apt-mirror), кэширование при первом запросе (apt-cacher-ng) или кастомные репозитории (reprepro).
Когда этот способ не подходит
- Если у вас мало дискового пространства — зеркало может занимать десятки гигабайт.
- Если требуется гарантированно свежие security‑патчи, вы можете предпочесть прямой доступ к security‑репозиторию вместо зеркалирования.
Мини‑методология (быстрый чек‑лист действий)
- Оцените свободное место и сеть.
- Установите apt-mirror и Apache.
- Отредактируйте /etc/apt/mirror.list, выберите релизы и секции.
- Запустите apt-mirror и дождитесь первого полного синка.
- Создайте симлинки в /var/www, проверьте права.
- Тестируйте с клиента: apt-get update.
- Настройте cron и мониторинг диска.
Чек‑лист по ролям
- Системный администратор: установить пакеты, настроить mirror.list, протестировать apt-get на клиенте.
- Сетевой администратор: убедиться в доступности 80/443 и в пропускной способности LAN.
- Администратор хранилища: выделить и смонтировать достаточный диск, настроить резервирование.
- Ответственный за безопасность: принять решение о зеркалировании security‑репозиториев и учётных записях доступа.
Критерии приёмки
- Зеркало доступно по HTTP с адреса 192.168.0.100 (или другого локального IP).
- Клиент выполняет apt-get update и видит ваши индексы.
- Пакеты из нужных секций доступны и устанавливаются без ошибок.
- Расписание обновлений работает и логи не содержат критических ошибок.
Однострочный глоссарий
- apt-mirror — утилита для зеркалирования Debian/Ubuntu репозиториев;
- mirror.list — конфигурационный файл apt-mirror;
- base_path — базовая директория для локального зеркала (по умолчанию /var/spool/apt-mirror).
Советы по совместимости и миграции
- При смене релиза просто замените имя дистрибутива в mirror.list (sarge → etch/ sid). После изменения запустите apt-mirror повторно.
- При переходе на другой базовый путь (set base_path) создайте каталоги и назначьте права, затем поправьте симлинки в /var/www.
Короткое объявление для команды (пример)
Я настроил локальное зеркало пакетов Debian/Ubuntu на 192.168.0.100. Для использования добавьте в /etc/apt/sources.list соответствующие строки с этим адресом; security‑обновления по умолчанию идут из интернета.
Итог
Создание локального зеркала apt-mirror — надёжный способ ускорить установки и сэкономить внешний трафик. Взвесьте потребности в диске и требования к security‑патчам при выборе, зеркалировать ли security‑репозитории. Планируйте обновления и мониторьте свободное место.
Важно: при любых изменениях конфигурации тестируйте доступ с клиентских машин и проверяйте логи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента