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

Как создать локальный зеркальный репозиторий Debian/Ubuntu с помощью apt-mirror

• 6 min read • Администрирование • Обновлено 23 Nov 2025
Локальное зеркало Debian/Ubuntu с apt-mirror
Локальное зеркало 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 update

1.2 Установка apt-mirror

Для всех систем (Debian и Ubuntu) установите пакет:

apt-get install apt-mirror

2 Установка 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 upgrade

5 Плановое обновление и автоматизация

Рекомендуется запланировать регулярную задачу для обновления зеркала (например, ежедневно ночью). Пример 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‑репозиторию вместо зеркалирования.

Мини‑методология (быстрый чек‑лист действий)

  1. Оцените свободное место и сеть.
  2. Установите apt-mirror и Apache.
  3. Отредактируйте /etc/apt/mirror.list, выберите релизы и секции.
  4. Запустите apt-mirror и дождитесь первого полного синка.
  5. Создайте симлинки в /var/www, проверьте права.
  6. Тестируйте с клиента: apt-get update.
  7. Настройте 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‑репозитории. Планируйте обновления и мониторьте свободное место.

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

Поделиться: 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 быстро