Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в организации несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев Ubuntu.
Но есть выход, можно сохранить все приложения на сервере в локальной сети, а затем распространять их на другие компьютеры этой сети когда потребуется. Локальный репозиторий Ubuntu – действительно быстрый и эффективный способ развертывания приложений, так как все необходимые приложения будут мгновенно получены с локального сервера на большой скорости. Таким образом, можно снизить трафик интернет и в итоге уменьшить ежегодные расходы на оплату интернета. В этой инструкции я расскажу как настроить локальный репозиторий Ubuntu.
Настройка локального репозитория Ubuntu
Мы будем использовать утилиту apt-mirror. Скачаем все пакеты из публичного репозитория на жесткий диск сервера Ubuntu.
Шаг 1. Установка Apache
Сначала нужно установить веб-сервер Apache. Он необходим для распространения пакетов по локальной сети:
sudo apt install apache2
Затем запустите его и добавьте в автозагрузку:
sudo systemctl start apache2
sudo systemctl enable apache2
Шаг 2. Настройка директории репозитория
Файлы репозитория будем хранить в папке /var/www/html чтобы не настраивать Apache для другой папки. Если на этом сервере будет только репозиторий, то это вполне допустимо. Создаём папку /var/www/html/ubuntu и даём на неё права веб-серверу:
sudo mkdir -p /var/www/html/ubuntu
sudo chown www-data:www-data /var/www/html/ubuntu
Шаг 3. Установка apt-mirror
Теперь установите apt-mirror:
sudo apt install apt-mirror
Шаг 4. Настройка apt-mirror
Теперь откройте файл /etc/apt/mirror.list и добавьте следующую строчку:
sudo vi /etc/apt/mirror.list
set base_path /var/www/html/ubuntu
Здесь /var/www/html/ubuntu – адрес только что созданной папки.
Шаг 5. Настройка репозиториев для загрузки
В этом же конфигурационном файле надо указать репозитории, которые хотите использовать, мы будем использовать стандартные, но вы можете добавить и PPA. Если вы хотите использовать обе архитектуры и x64 и x32, репозитории для них нужно указать в файле отдельно. Например, для x32 строчка будет начинаться с deb-i386 а для х64: deb-amd64 или просто deb.
По умолчанию в файле настроены репозитории для редакции Ubuntu auful, в этом примере мы загрузим репозитории для Ubuntu 20.04. Закомментируйте все репозитории в файле и добавьте вместо них один:
sudo vi /etc/apt/mirror.list
deb http://ua.archive.ubuntu.com/ubuntu/ focal main restricted
Шаг 6. Загрузка пакетов
Когда завершите с настройкой запустите загрузку пакетов командой:
В терминал будет выведено что-то вроде:
Сейчас все пакеты из публичного репозитория Ubuntu загружаются и сохраняются в локальной папке. В нашем случае в папке /var/localrepo. В зависимости от вашей скорости интернет это может занять несколько часов. Отменить загрузку можно в любое время, когда вы ее возобновите она продолжится там, где вы ее прервали.
Шаг 7. Настройка Cron
Не нужно вручную запускать эту команду каждый день для обновления репозитория, можно запланировать задание Cron. Для этого раскоментируйте следующую строчку в файле /etc/cron.d/apt-mirror:
sudo vi /etc/cron.d/apt-mirror
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
В этом примере Cron будет запускать обновление пакетов в четыре утра каждый день.
Шаг 8. Копирование скрипта
Перед тем, как всё будет готово, надо в наш репозиторий важный скрипт из папки /var/spool/apt-mirror:
sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
Шаг 9. Конфигурация клиентов
Настройка на клиентской машине не вызовет никаких трудностей. Просто откройте файл /etc/apt/sources.list и добавьте свой локальный репозиторий, так же как вы добавляли удаленный, только используйте ваш ip адрес вашей машины:
sudo vi /etc/apt/sources.list
deb http://192.168.1.102/ubuntu focal main
Вот и все, здесь 192.168.1.102 – адрес сервера с репозиторием. Теперь обновим списки пакетов:
sudo apt update
Для установки программы достаточно выполнить стандартную команду:
sudo apt install package-name
Настройка apt-mirror ubuntu завершена. Теперь клиентам не нужно подключение к интернету для загрузки пакетов. Они будут получать все пакеты и обновления с локального репозитория Ubuntu.
Выводы
Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!