База знаний по Open Source
Авторизация
Поиск по базе знаний

ubuntuОчень часто некоторые внутренние корпоративные сервера, особенно на виртуальных машинах, по тем или иным субъективным причинам не имеют выхода в Интернет. По крайней мере у меня в практике такое встречается очень часто.

Но обновления системы проводить нужно. Сразу же напрашивается выход – хранить сервер обновления локально, на одной из машин имеющих доступ к интернету. То-есть использовать apt-mirror.

Существенный недостаток этого подхода – 80% (если не больше!!!) репозитория я не использую и использовать никогда не буду. Ни на одном из моих серверов.

Самый разумный выход использовать сервис apt-cacher-ng. Когда пользователь клиентской машины инициирует обновление или установку какого либо программного обеспечения, его машина подключается к локальному серверу обновлений и запрашивает необходимые пакеты.

Сервер обновлений проверяет, есть ли его последние версии запрошенных пакетов в локальном кэше. Если есть, то пакеты отправляются пользователю. В противном случае apt-cacher-ng скачивает обновлённые версии запрошенных пакетов, а затем отправляет их пользователю. Новые версии остаются в кэше для дальнейшего использования.

Серверная часть

apt-cacher-ng устанавливается из репозитория Ubuntu:.

user$ sudo apt-get install apt-cacher-ng

При желании можно немного подправить конфигурационный файл /etc/apt-cacher-ng/acng.conf:

$ sudo nano /etc/apt-cacher-ng/acng.conf

Обычно меняются только три этих параметра

...
CacheDir: /var/cache/apt-cacher-ng     #Директория где будет хранится кэш
LogDir: /var/log/apt-cacher-ng         #Путь лога, если пути нет, лог записываться не будет
Port: 3142                             #TCP (http) Порт который использует сервис
...

apt-cacher-ng не создает никаких баз и структур, ничего не сжимает, а хранит все в том виде как в оригинале репозитория. CacheDir нужно указывать с учетом того, что в самом безумном случае на сервере обновлений окажется репозиторий целиком. А это около 40GB.

После изменения конфигурации необходимо перезапустить сервис:

user$ service apt-cacher-ng restart

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

На всех клиентах для использования локального сервера обновлений необходимо только создать один файл –

/etc/apt/apt.conf.d/01proxy

с одной строчкой:

$ sudo sh -c "echo "Acquire::http { Proxy "http://server:3142"; }; "> /etc/apt/apt.conf.d/01proxy"

server – естественно нужно заменить на имя или IP- адрес сервера обновлений. Можно приступать к обновлению.

$ sudo apt-get update 
$ sudo apt-get upgrade

Результат использования сервера можно посмотреть через браузер, по адресу http://server:3142/acng-report.html

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