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

Если вы управляете несколькими компьютерами Ubuntu в сети, загрузка обновлений и пакетов для каждой системы по отдельности может стать проблемой, поскольку она расходует трафик и занимает больше времени, чем нужно.
Разве не было бы здорово, если бы вы могли загрузить все необходимые пакеты всего один раз и позволить всем вашим системам устанавливать их локально из вашего собственного репозитория? Именно это и помогает сделать apt-mirror
В этой статье мы пошагово расскажем вам, как настроить локальный репозиторий Ubuntu с помощью apt-mirror
.
Что такое apt-mirror?
apt-mirror
это небольшой инструмент, который загружает весь репозиторий APT (или его часть) с зеркал Ubuntu и сохраняет его локально на вашем сервере. Затем вы можете предоставить доступ к этому локальному репозиторию по HTTP и указать на него своим клиентским компьютерам.
По сути, apt-mirror
помогает вам:
- Создайте локальное зеркало пакетов Ubuntu.
- Сократите использование интернета (отлично подходит для сетей с ограниченной пропускной способностью).
- Ускорьте установку и обновление пакетов.
- Работайте в автономном режиме или изолированно.
Что вам понадобится (подробно)
Прежде чем мы засучим рукава и начнём зеркалировать репозитории Ubuntu, давайте убедимся, что у вас всё готово.
Ниже мы расскажем об основных моментах и объясним, почему каждый из них важен.
- Вам понадобится выделенный компьютер с Ubuntu, желательно с последней версией LTS (Долгосрочная поддержка), например Ubuntu 24.04, Ubuntu 22.04 или Ubuntu 20.04.
- Вам потребуется от 150 ГБ до 250 ГБ свободного места на диске в зависимости от того, какую часть репозитория Ubuntu вы планируете зеркалировать.
- Вы должны уверенно пользоваться командной строкой: редактировать файлы, выполнять команды с помощью
sudo
, устанавливать пакеты и настраивать базовые службы, такие как Apache или Nginx. - Для первой синхронизации вам понадобится стабильное и достаточно быстрое подключение к Интернету, так как может потребоваться загрузка десятков или даже сотен гигабайт, что особенно важно, если вы зеркалируете всю версию Ubuntu с несколькими компонентами.
Шаг 1. Установите apt-mirror для локального репозитория APT в Ubuntu
Чтобы настроить локальный репозиторий, сначала нужно установить пакет apt-mirror
, который специально разработан для создания полного или частичного зеркала официальных репозиториев APT в Ubuntu.
Для начала обновите индекс пакетов вашей системы, чтобы установить последнюю версию доступного программного обеспечения.
sudo apt update
После завершения обновления установите инструмент apt-mirror
с помощью команды:
sudo apt install apt-mirror
После установки apt-mirror
готов к настройке в соответствии с вашими потребностями в зеркалировании.
Шаг 2. Создание необходимых папок для локального репозитория Ubuntu
При использовании apt-mirror
в вашей системе должно быть место для загрузки и хранения всех репозиториев, таких как пакеты данных, метаданные и структура.
По умолчанию всё сохраняется в каталоге /var/spool/apt-mirror
, который становится локальной копией зеркалируемого репозитория Ubuntu.
Хотя вы можете изменить это расположение, отредактировав файл конфигурации (мы вернёмся к этому позже), сначала важно убедиться, что каталог существует и готов к использованию.
sudo mkdir -p /var/spool/apt-mirror
В дополнение к этому мы создаём ещё один каталог в /var/www/html/ubuntu
, который будет общедоступной папкой, из которой клиентские компьютеры в вашей сети смогут получать доступ к зеркальному репозиторию через веб-сервер, например Apache или Nginx.
sudo mkdir -p /var/www/html/ubuntu
На следующем этапе мы синхронизируем содержимое зеркального каталога с этим веб-адресом. Таким образом, вашим внутренним компьютерам не нужно будет подключаться к интернету — они будут получать обновления напрямую с вашего локального зеркала по протоколу HTTP.
Шаг 3. Настройка apt-mirror
После установки apt-mirror
вам нужно будет указать, что загружать, где хранить и как вести себя во время синхронизации. Все это настраивается в основном файле конфигурации, который находится по адресу:
/etc/apt/mirror.list
Откройте файл в своём любимом редакторе.
sudo nano /etc/apt/mirror.list
Теперь давайте рассмотрим пример конфигурации для зеркалирования Ubuntu 24.04 (Noble Numbat) для систем amd64 (64-разрядных):
############# Конфигурация apt-mirror ############# # Каталог для хранения зеркальных файлов 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 amd64 # Количество потоков загрузки (для большинства подходит значение 10–20) set nthreads 10 # Управление файлами с расширением tilde (оставьте как есть) set _tilde 0 ############# Репозитории для зеркалирования ########### # Базовые репозитории Ubuntu 24.04 deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse # Обновления безопасности deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse ############# Инструкции по очистке ############## clean http://archive.ubuntu.com/ubuntu clean http://security.ubuntu.com/ubuntu ##############################################
Шаг 4. Начните зеркалирование пакетов APT
После того как вы правильно настроили mirror.list
файл с репозиториями и компонентами, которые хотите отразить в зеркале. Пришло время запустить команду apt-mirror
для загрузки пакетов Ubuntu на ваш локальный сервер.
sudo apt-зеркало
Приведенная выше команда подключается к официальным зеркальным серверам Ubuntu, получает указанные ранее метаданные и файлы пакетов и сохраняет их на локальном диске в папке /var/spool/apt-mirror
.
В зависимости от того, сколько компонентов вы включили (например, main
, universe
, и т. д.) и сколько у вас архитектур (например, amd64 или i386), этот процесс может занять несколько часов и потребовать более 100 ГБ дискового пространства. Поэтому перед началом убедитесь, что на вашем сервере достаточно свободного места.
Мы настоятельно рекомендуем запускать указанную выше команду в сеансе screen или tmux, потому что загрузка больших файлов занимает много времени, и если ваш SSH-сеанс прервётся или терминал закроется, загрузка прекратится. Использование screen или tmux гарантирует, что процесс будет продолжаться в фоновом режиме, даже если вы потеряете соединение.
Шаг 5. Обслуживание зеркала с помощью Apache или Nginx
После того как ваша система завершит загрузку всех пакетов Ubuntu с помощью apt-mirror
, следующим шагом будет обеспечение доступа к этим пакетам для других компьютеров в вашей сети.
Для этого вам нужно будет обслуживать зеркальные файлы по протоколу HTTP, для чего потребуется веб-сервер, например Apache или Nginx.
В этом руководстве для простоты мы будем использовать Apache. Для начала установите Apache с помощью команды:
sudo apt install apache2
После установки вам нужно будет сделать локальный каталог зеркал доступным для веб-корня Apache по умолчанию, который обычно находится по адресу /var/www/html
.
Для этого можно создать символические ссылки из зеркальных каталогов на веб-корень. Например, используйте следующие команды для создания ссылок на архивы Ubuntu и зеркала безопасности:
sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu sudo ln -s /var/spool/apt-mirror/mirror/security.ubuntu.com/ubuntu /var/www/html/ubuntu-security
После подключения пришло время проверить, работает ли зеркало. Откройте веб-браузер и перейдите по адресу http://your-server-ip/ubuntu/dists/noble/
. Замените your-server-ip
на фактический IP-адрес вашего зеркального сервера. Если всё настроено правильно, вы должны увидеть список каталогов или файлы релизов для дистрибутива noble.
Шаг 6. Настройте клиентов на использование локального зеркала
После того как вы настроите локальное зеркало APT и подключите его к HTTP, следующим шагом будет настройка клиентских компьютеров для использования этого зеркала вместо подключения к Интернету для получения пакетов. Это означает, что вам нужно будет отредактировать файл sources.list
на каждом клиентском компьютере, чтобы указать системе, откуда получать обновления и программное обеспечение.
Для начала создайте резервную копию существующего файла sources.list
на случай, если позже вам понадобится вернуться к исходным настройкам.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
После этого откройте файл в предпочитаемом вами текстовом редакторе.
sudo nano /etc/apt/sources.list
Теперь самое важное: замените URL-адреса зеркал Ubuntu по умолчанию на IP-адрес (или имя хоста) вашего локального зеркального сервера. Например, если IP-адрес вашего локального сервера — 192.168.1.100
, ваш список источников должен выглядеть так:
deb http://192.168.1.100/ubuntu noble main restricted universe multiverse deb http://192.168.1.100/ubuntu noble-updates main restricted universe multiverse deb http://192.168.1.100/ubuntu-security noble-security main restricted universe multiverse
Эти строки указывают клиентскому устройству на необходимость получать базовые системные пакеты, обновления и исправления безопасности непосредственно с локального зеркала, а не с archive.ubuntu.com
или security.ubuntu.com
.
После внесения этих изменений сохраните и запустите:
sudo apt update
Это позволит обновить индекс пакетов с помощью вашего локального репозитория. Если всё настроено правильно и ваше локальное зеркало доступно, клиент теперь будет получать обновления и устанавливать пакеты непосредственно с вашего сервера, что ускорит установку и снизит потребление интернет-трафика.
Шаг 7. Автоматизация зеркальной синхронизации
После завершения первоначальной синхронизации локального зеркала Ubuntu с помощью apt-mirror
следующим важным шагом будет регулярное обновление.
Репозитории Ubuntu часто обновляются новыми пакетами, исправлениями для системы безопасности и исправлениями ошибок. Если ваше локальное зеркало устареет, клиентские системы не получат преимуществ от этих обновлений, а значит, смысл в зеркале будет отсутствовать.
Чтобы автоматизировать этот процесс, мы используем простую, но мощную функцию Linux под названием cron, которая позволяет планировать выполнение задач (называемых заданиями cron) в определённое время или с определёнными интервалами.
Для этого откройте файл crontab пользователя root, выполнив команду:
sudo crontab -e
Теперь добавьте в конец файла следующую строку:
0 2 * * * / usr/bin/apt-mirror > /var/log/apt-mirror.log
Эта строка указывает системе запускать команду apt-mirror
каждый день в 2:00. Часть > /var/log/apt-mirror.log
отправляет вывод команды в файл журнала, чтобы вы могли проверить его позже, если потребуется устранить неполадки.
Заключение
Настройка локального репозитория Ubuntu APT с помощью apt-mirror
— отличное решение для тех, кто управляет несколькими компьютерами в сети. Это не только экономит время и трафик, но и обеспечивает более быструю установку пакетов и упрощает обслуживание, особенно в средах с ограниченным доступом к интернету или без него.
Редактор: AndreyEx