Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в организации несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев 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
Здесь /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
Шаг 6. Загрузка пакетов
Когда завершите с настройкой запустите загрузку пакетов командой:
sudo apt-mirror
В терминал будет выведено что-то вроде:
Сейчас все пакеты из публичного репозитория 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
Вот и все, здесь 192.168.1.102 - адрес сервера с репозиторием. Теперь обновим списки пакетов:
sudo apt update
Для установки программы достаточно выполнить стандартную команду:
sudo apt install package-name
Настройка apt-mirror ubuntu завершена. Теперь клиентам не нужно подключение к интернету для загрузки пакетов. Они будут получать все пакеты и обновления с локального репозитория Ubuntu.
Выводы
Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!
я немного не совсем в теме. скажите пожалуйста, как добавить сода еще репозиторием. Вот активно используем http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu/ trusty/main
Как добавить. вообще принцип. Как просто при добавлении описать репы, что бы apt-mirror не ругался и другие пользователи обновляться могли смело?
поправочка. у менея только Ubuntu 14.04.03
Все, вопрос снят. удалите пожалуйста коменты мои.
Напишите как решили проблему, я думаю другим пользователям тоже может быть интересно.
я думаю что эту статью можно дополнить описанием landscape
он сочитает в себе оба вышеперечисленных способа, управление всеми подконтрольными тачками на убунте и удобную вебморду
(сам не тыкал так как не любитель бубунт, но говорят вещь стоящая)
Возможно добавлю, спасибо)
Назрел вопрос.
Если скажем у меня есть скачанные репозитории к нескольким версиям Убунты, то как мне добавить локальный репозиторий чтобы мои компы видели все пакеты в одном репозитории, а не только то что предназначено для их версии.
Скажу так: Чтобы версия bionic видела пакеты которые предназначены для xenial и наоборот.
apt-mirror не все качает, это важно упомянуть,
пример проблемы: https://github.com/apt-mirror/apt-mirror/issues/145
мне кажется, об этом было бы не лишним упомянуть в статье