Вторник, 17.02.2026 19:00

Собираем apt-chacher-ng из исходного кода в РЕДОС Linux

Собираем apt-cacher-ng из исходного кода в РЕДОС Linux

Для загрузки обновлений в РЕДОС Linux по умолчанию используются сервера РЕД СОФТ или зеркала Яндекса. Когда в сети насчитывается больше 10 ПК, одновременная загрузка одних и тех же файлов может создавать значительный трафик и замедлять работу остальных пользователей с ресурсами в сети Интернет.

Чтобы не загружать одни и те же файлы много раз, имеет смысл установить кэширующий прокси-сервер, созданный специально для загрузки и временного хранения метаданных репозиториев и файлов с пакетами.

Одним из популярных таких серверов является apt-cacher-ng. Изначально он создавался для работы с APT-репозиториями, но со временем его доработали, и он так же хорошо работает с RPM-репозиториями.

В репозиториях РЕДОС такой пакет отсутствует, так что мы соберем его из исходного кода!

Что такое кэширующий прокси-сервер?

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

Так как скорость загрузки по локальной сети в разы выше, чем скорость загрузки из сети Интернет, это позволяет ускорить процесс загрузки обновлений. К тому же разгружается сам канал доступа к сети Интернет.

Чтобы не загружать канал в дневное время в apt-cacher-ng предусмотрен режим работы оффлайн. При этом режиме все запросы на обновления обрабатываются только самим прокси-сервером без загрузки пакетов из сети Интернет. 

Таким образом, если в сети используется одинаковый набор ПО, возможно в ночное время осуществлять перевод прокси-сервера в режим онлайн и обновление виртуальной машины со всеми установленными пакетами. После чего снова переводить сервер в режим оффлайн, а днем производить обновление клиентов из кэша.

Так же, при необходимости, вы можете сохранять содержимое кэша на внешний носитель и таким образом обновлять ПК находящиеся в закрытых сетях без доступа к сети Интернет!

Установка пакетов для сборки apt-cacher-ng из исходного кода в РЕДОС Linux

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

sudo dnf install cmake g++ systemd-devel bzip2-devel libevent-devel libcares-devel fuse-devel fuse wget tcp_wrappers-devel zlib-devel xz-devel openssl-devel  libtomcrypt-devel git -y

Сборка apt-cacher-ng из исходного кода

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

cd ~
wget https://ftp.debian.org/debian/pool/main/a/apt-cacher-ng/apt-cacher-ng_3.7.5.orig.tar.xz

Распакуем:

tar xvf apt-cacher-ng_3.7.5.orig.tar.xz

Вы так же можете загрузить исходный код с Gitflic-зеркала:

https://gitflic.ru/project/vasiliyaltunin/apt-cacher-ng

Запустите:

git clone https://gitflic.ru/project/vasiliyaltunin/apt-cacher-ng.git apt-cacher-ng-3.7.5

Запустим конфигурирование и сборку:

cd apt-cacher-ng-3.7.5
chmod +x ./build.sh
./build.sh --install-prefix=/

Запустим установку:

sudo make -C builddir install

Настройка службы systemd для запуска apt-cacher-ng

Добавим пользователя для запуска сервера:

sudo useradd -r -s /bin/false apt-cacher-ng

Добавим модуль systemd для службы apt-cacher-ng:

sudo mcedit /lib/systemd/system/apt-cacher-ng.service

Добавим содержимое:

[Unit]
Description=Apt-Cacher NG software download proxy
After=network.target
# This can be used to ensure that the service starts only after delayed mount of
# the storage location.
# Note: when the CacheDir folder in configuration file(s) like in
# /etc/apt-cacher-ng/acng.conf is changed, change the next line too!
RequiresMountsFor=/var/cache/apt-cacher-ng

[Service]
# the SocketPath option can be removed if the inetd bridge functionality is not needed
ExecStart=/usr/sbin/apt-cacher-ng -c "/etc/apt-cacher-ng" ForeGround=1
User=apt-cacher-ng
Group=apt-cacher-ng
# This can be changed to notify if the support was enabled at build time
Type=notify
Restart=on-failure

[Install]
WantedBy=multi-user.target

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

sudo mkdir /var/cache/apt-cacher-ng
sudo mkdir /var/log/apt-cacher-ng

Изменим права доступа к этим папкам:

sudo chown -R apt-cacher-ng /var/cache/apt-cacher-ng
sudo chgrp -R apt-cacher-ng /var/cache/apt-cacher-ng
sudo chown -R apt-cacher-ng /var/log/apt-cacher-ng
sudo chgrp -R apt-cacher-ng /var/log/apt-cacher-ng

Ниже я приведу минимальный файл конфигурации. Полную версию вы можете найти в папке с исходным кодом в папке /builddir/conf

Исправим файл конфигурации. Откроем:

sudo mcedit /etc/apt-cacher-ng/acng.conf

Заменим содержимое на:

CacheDir: /var/cache/apt-cacher-ng
LogDir: /var/log/apt-cacher-ng

SupportDir:  /usr/lib/apt-cacher-ng

Port:3142

ReportPage: acng-report.html

ExThreshold: 4

Offlinemode: 0

Активируем службу apt-cacher-ng:

sudo systemctl enable apt-cacher-ng

Запустим службу apt-cacher-ng:

sudo systemctl start apt-cacher-ng

Проверим статус службы:

sudo systemctl status apt-cacher-ng | grep active

Служба установлена и активна

Загруженные файлы будут размещены в папке с кэшем:

/var/cache/apt-cacher-ng/

В следующей статье мы рассмотрим расширенную настройку сервера и настройку клиентов на использование локального сервера обновлений на базе apt-cacher-ng.

Заключение

Сегодня мы рассмотрели сборку apt-cacher-ng из исходного кода в РЕДОС Linux:

Установили требуемые пакеты для сборки прокси-сервера;

Загрузили исходный код;

Запустили сборку сервера;

Запустили установку сервера;

Создали пользователя для запуска сервера;

Установили и настроили службу systemd для apt-cahcer-ng;

Создали все необходимые папки и назначили им нужные права;

Добавили минимальный файл конфигурации;

Активировали и запустили службу apt-cacher-ng.

Категория РЕД ОС Linux
Теги РЕДОС Linux

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 102