Локальный сервер обновлений линукс

LinuxSoID

Сегодня мы хотим осветить очень важную тему, особенно, если у вас несколько компьютеров под управлением Ubuntu Linux и не хочется обновлять каждый из них через интернет. В общем, речь пойдет про локальные сервера обновлений для Ubuntu.

Во многом эта заметка основана на статье «Apt-cacher как корпоративный сервер обновлений для Ubuntu/Kubuntu/*buntu», размещенной на сайте habrahabr.ru.

Долгое время стандартом де факто для поднятия локального сервера обновлений являлся apt-mirror, но у него есть несколько недостатков, главным из которых, пожалуй, является нерациональное использование дискового пространства.

Гораздо более интересным и гибким решением является apt-cacher, который умеет хранить только нужные пакеты, обновлять локальный репозиторий по мерее обновления основного, и, конечно же, качать пакет только один раз, а затем брать его из кэша. В общем-то, это действительно хорошее решение для обновления компьютеров с Ubuntu в количестве больше одного, объединенных в одну сеть.

Из минусов автор статьи выделяет следующие: отличие структуры хранения пакетов от оригинальной (а разве нам важно, как они хранятся?) и обязательное наличие веб-сервера Apache (который поднимается за 2 минуты).

Мы не будем сильно зацикливаться на тонких настройках, которые отлично описаны в оригинальной статье, а просто обозначим основные моменты.

Итак, поехали: sudo apt-get install apt-cacher.

Создаем и назначаем права на папку, в которой будут храниться пакеты. Надо отметить, что apt-cacher не требует сразу место под весь объем репозиториев (около 22 Гб), а хранит только то, что нужно. Напомним, что в Debian-дистрибутивах Apache запускается от юзера www-data группы www-data, следовательно нужно сделать этого пользователя владельцем созданной папки.

Настройки apt-cacher хранятся в файле: /etc/apt-cacher/apt-cacher.conf. Его и нужно чуть-чуть подредактировать, указав там созданную папку для пакетов, а также некоторые другие параметры. Опять же, пример конфигурации смотрите в оригинальной статье на Хабре.

Следующий шаг — настройка Apache. Для работы apt-cacher нам понадобится Perl и ExecCGI в Apache. Файл конфигурации лежит в: /etc/apt-cacher/apache.conf. Достаточно лишь прописать Alias: Alias /apt-cacher /usr/share/apt-cacher/apt-cacher.pl и разрешить выполнять Perl скрипты в указанной папке: Options ExecCGI, AddHandler cgi-script .pl.

Почти всё готово! Остается только запустить сервер: sudo /etc/init.d/apt-cacher start. По умолчанию сервер будет висеть на 9999 порту.

Теперь на всех компьютерах, которые должны тянуть обновления с этого сервера нужно открыть файл /etc/apt/sources.list, закомментировать в нем все строки и добавить одну новую: deb updateserver:9999/ubuntu intrepid multiverse restricted main universe, где updateserver — имя машины, на которой мы только что подняли apt-cacher.

Читайте также:  Gcc location in linux

Создание локального репозитория.
1. Устанавливаем dpkg-dev
apt-get install dpkg-dev
2. Создаем директорию где будут хранится пакеты
mkdir /usr/local/mydebs
3. Открываем gedit и создаем новый файл. Туда вставляем:
cd /usr/local/mydebs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Файл называем например update-mydebs и сохраняем в домашнюю директорию /bin. Если ресурса ~/bin нет — то создайте его. Этот ресурс будет автоматически добавлен в предопределенные пути системы.
4. Делаем скрипт апдейта локального репозитория исполняемым:
chmod u+x ~/bin/update-mydebs
5. Правим файл sources.list
Жмем ALT+F2 вводим
gksu gedit /etc/apt/sources.list
Добавляем в него строку
deb file:/usr/local/mydebs ./
Сохраняем файл.

Использование репозитория
sudo update-mydebs
sudo apt-get update
Далее репозиторий используется как обычно.

Источник

Сервер обновлений Astra Linux — Astra Update Server (AUS) для ЛВС. Часть 1.

Обновление операционной системы очень важный процесс. Автоматизация этого процесса позволяет поддерживать все компоненты в актуальном состоянии, вовремя закрывать уязвимости и вносить исправления, повышающие стабильность и производительность работы операционной системы. В экосистеме Windows существует Windows Server Update Services (WSUS) его основная задача — хранение и предоставление доступа к обновлениям операционных систем Windows. В Astra Linux нет отдельного сервера для обновления ПК и серверов в ЛВС. Да, можно сделать полный клон репозитория Astra Linux, но это неэффективно, приводит к хранению большого количества ненужных данных. Некоторые репозитории занимают на диске более 30 Гб, так что с загрузкой могут возникнуть проблемы. К тому же, в последнее время, некоторые проекты с открытым исходным кодом начали блокировать доступ к репозиториям и сайтам проектов с Российских и Белорусских IP-адресов. В предыдущих статьях мы рассматривали способы обхода этих блокировок, но поднимать OpenVPN на каждом ПК не удобно, к тому же скорость загрузки, как правило, оставляет желать лучшего. Исходя из проблем, возникающих из вышеперечисленного, я решил начать новый проект — Сервер обновлений Astra Linux — Astra Update Server (AUS). Сегодня мы сделаем первый шаг к созданию AUS — рассмотрим установку локального кэширующего apt-сервера с помощью Apt-Cacher-NG, таким образом все устанавливаемые пакеты будут доступны локально для повторного использования!

Как это работает?

apt-cacher.drawio.png

В ЛВС устанавливается кэширующий apt-сервер. На клиентах, в настройках apt, мы устанавливаем данный сервер в качестве прокси-сервера. На данной диаграмме представлена структура и способ подключения сервера Apt-Cacher-AG. В состав сервера входят:

  • web-сервер;
  • Прокси-сервер;
  • Локальное apt-хранилище.
Читайте также:  Linux dump thread stack

Каждый раз, когда любой из ПК или сервер в ЛВС, запрашивает deb-пакет, файл сохраняется на сервере и передается клиенту.

В следующий раз, когда другой ПК запросит такой же файл, он будет отдан уже из локального кэша.

Так же Apt-Cacher-AG может работать в режиме прозрачного прокси, перенаправляя запросы на вышестоящий сервер.

Таким образом при использовании Apt-Cacher-AG:

  1. Снижается нагрузка на интернет канал;
  2. Увеличивается скорость загрузки;
  3. Уменьшается общее время установки обновлений;
  4. Снижается нагрузка на ЛВС.

Установка

Установим требуемые пакеты:

sudo apt update sudo apt install build-essential cmake libzip-dev libbz2-dev liblzma-dev libssl-dev pkg-config libfuse-dev zlib1g-dev libboost-dev libwrap0-dev git libwrap0 curl wget gnupg

Загрузим исходный код проекта:

cd ~ git clone https://github.com/sevikkk/apt-cacher-ng.git

Дождемся окончания сборки:

make[3]: выход из каталога «/root/apt-cacher-ng/build» [100%] Built target acngfs make[2]: выход из каталога «/root/apt-cacher-ng/build» make[1]: выход из каталога «/root/apt-cacher-ng/build»
sudo cp build/apt-cacher-ng /usr/local/bin sudo cp build/in.acng /usr/local/bin sudo mkdir /etc/apt-cacher-ng sudo cp conf/* /etc/apt-cacher-ng sudo mkdir /usr/share/doc/apt-cacher-ng sudo cp doc/* /usr/share/doc/apt-cacher-ng -r
sudo adduser \ --system \ --shell /bin/bash \ --gecos 'apt-cacher-ng' \ --group \ --disabled-password \ --home /home/apt-cacher-ng \ apt-cacher-ng

Создадим папки для хранения пакетов и логов:

sudo mkdir /var/cache/apt-cacher-ng sudo mkdir /var/log/apt-cacher-ng sudo chown -R apt-cacher-ng:apt-cacher-ng /var/cache/apt-cacher-ng sudo chmod -R 750 /var/cache/apt-cacher-ng sudo chown -R apt-cacher-ng:apt-cacher-ng /var/log/apt-cacher-ng sudo chmod -R 750 /var/log/apt-cacher-ng

Откроем файл конфигурации:

sudo mcedit /etc/apt-cacher-ng/acng.conf
CacheDir: /var/cache/apt-cacher-ng LogDir: /var/log/apt-cacher-ng #ForceManaged: 1 Port:3142 BindAddress: 0.0.0.0 Remap-astra: file:astra_mirrors; file:backends_astra Remap-debrep: file:debian_mirror; file:backends_debian UserAgent: Debian APT-HTTP/1.3 (1.6.10) ReportPage: acng-report.html VerboseLog: 4 UnbufferLogs: 1 LogSubmittedOrigin: 1 ExTreshold: 360 Debug:5 LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng

Настроим репозитории, заменим содержимое файлов и создадим новые:

echo https://mirror.yandex.ru/debian/ | sudo tee /etc/apt-cacher-ng/backends_debian echo http://mirror.yandex.ru/debian/ | sudo tee /etc/apt-cacher-ng/debian_mirrors echo https://mirror.yandex.ru/astra/stable/orel/repository/ | sudo tee /etc/apt-cacher-ng/astra_mirrors echo https://download.astralinux.ru/astra/stable/orel/repository/ | sudo tee -a /etc/apt-cacher-ng/astra_mirrors

Настроим сервис для запуска сервера. Создадим файл:

sudo mcedit /etc/systemd/system/apt-cacher-ng.service
[Unit] Description=Apt-Cacher NG software download proxy After=local-fs.target After=network.target [Service] ExecStart=/usr/local/bin/apt-cacher-ng -c /etc/apt-cacher-ng ForeGround=1 User=apt-cacher-ng Group=apt-cacher-ng [Install] WantedBy=multi-user.target

Включим и запустим службу:

sudo systemctl enable apt-cacher-ng sudo systemctl start apt-cacher-ng
sudo systemctl status apt-cacher-ng ● apt-cacher-ng.service - Apt-Cacher NG software download proxy Loaded: loaded (/etc/systemd/system/apt-cacher-ng.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-04-21 18:59:11 +11; 43min ago Main PID: 17016 (apt-cacher-ng) Tasks: 3 (limit: 9830) CGroup: /system.slice/apt-cacher-ng.service └─17016 /usr/local/bin/apt-cacher-ng -c /etc/apt-cacher-ng Foreground=1 апр 21 19:59:11 astra-seerver1 systemd[1]: Started Apt-Cacher NG software download proxy. апр 21 19:59:11 astra-seerver1 apt-cacher-ng[17016]: Warning: configured to use libwrap filters but feature is not built-in.

Всё в порядке, можно настраивать apt на клиентских ПК и серверах.

Читайте также:  Goldeneye kali linux install

Настройка клиентов

На клиентском Пк или сервере создадим файл:

echo 'Acquire::http < Proxy "http://192.168.0.20:3142"; >;' | sudo tee /etc/apt/apt.conf.d/00proxy

Где 192.168.0.20 ip-адрес нашего сервера Apt-Cacher-NG

Изменим список базовый список репозиториев:

sudo echo deb http://mirror.yandex.ru/astra/stable/orel/repository orel main contrib non-free | sudo tee /etc/apt/sources.list
sudo apt update Пол:1 http://mirror.yandex.ru/astra/stable/orel/repository orel InRelease [13,2 kB] Пол:2 http://mirror.yandex.ru/astra/stable/orel/repository orel/main i386 Packages [392 kB] Пол:3 http://mirror.yandex.ru/astra/stable/orel/repository orel/main amd64 Packages [3 980 kB] Пол:4 http://mirror.yandex.ru/astra/stable/orel/repository orel/contrib amd64 Packages [4 456 B] Пол:5 http://mirror.yandex.ru/astra/stable/orel/repository orel/contrib i386 Packages [1 174 B] Пол:6 http://mirror.yandex.ru/astra/stable/orel/repository orel/non-free amd64 Packages [79,7 kB] Пол:7 http://mirror.yandex.ru/astra/stable/orel/repository orel/non-free i386 Packages [4 276 B] Получено 4 475 kБ за 3с (1 181 kБ/c) Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Может быть обновлён 1 пакет. Запустите «apt list --upgradable» для показа.

Обратите внимание, мы используем протокол http, это обязательное условие, при котором прокси сервер будет корректно работать!

Установим библиотеку, которой точно нет у нас сервере:

sudo apt install libtiff-dev

Обратите внимание, apt может «зависнуть» на некоторое время с надписью «Ожидание заголовков», это нормально!

Перейдем на сервер и откроем папку:

sudo ls /var/cache/apt-cacher-ng mirror.yandex.ru

В ней прокси создал папки для хранения репозиториев. По умолчанию мы используем зеркало Яндекса, для ускорения загрузки.

sudo ls /var/cache/apt-cacher-ng/mirror.yandex.ru/astra/stable/orel/repository/pool/main/t/tiff libtiff5_4.0.8-2+deb9u6_amd64.deb libtiff5-dev_4.0.8-2+deb9u6_amd64.deb libtiffxx5_4.0.8-2+deb9u6_amd64.deb libtiff5_4.0.8-2+deb9u6_amd64.deb.head libtiff5-dev_4.0.8-2+deb9u6_amd64.deb.head libtiffxx5_4.0.8-2+deb9u6_amd64.deb.head 

В ней находятся несколько загруженных файлов. В следующий раз, когда мы будем устанавливать эти пакеты на другой ПК или сервер наш прокси использует их и не будет ничего загружать из сети Интернет.

Заключение

Сегодня мы рассмотрели установку локального кэширующего apt — Apt-Cacher-NG.

Установили требуемые пакеты.

Загрузили исходный код прокси и собрали его из исходного кода.

Скопировали и создали все необходимые папки и файлы.

Запустили прокси сервер и настроили клиентский ПК на получение обновлений.

Проверили загрузку и установку через наш прокси.

В следующей части мы рассмотрим подключение стороннего репозитория на примере node.js.

Источник

Оцените статью
Adblock
detector