Как использовать apt-cacher-ng только при наличии?

Я использую apt-cacher-ng в моей локальной сети со следующей конфигурацией на клиентах:

Acquire::http { Proxy "http://acng-host:3142"; };

Некоторые клиенты являются ноутбуками, так как я могу настроить их на использование кэша только в том случае, если он доступен в этой сети?

3 ответа

Решение

Примерно так должно работать:

/etc/NetworkManager/dispatcher.d

#!/bin/bash
ip=10.0.1.13
port=3142
nc -w 1 $ip $port
proxy_file="/etc/apt/apt.conf.d/02local_proxy"
if [ $? -eq 0 ]; then
    echo "Acquire::http { Proxy \"http://$ip:$port\"; };" > $proxy_file
    echo 'Acquire::https { Proxy "false"; };' >> $proxy_file
else
    rm -f $proxy_file
fi

Исправить разрешения

sudo chmod +x /etc/NetworkManager/dispatcher.d/99SetAptProxy

Заметки:

  • Команда "nc" проверяет, может ли она подключиться к порту 3142 по указанному IP-адресу.
  • Этот скрипт запускается каждый раз, когда сетевой интерфейс изменяется сетевым менеджером.
  • Не стесняйтесь изменять способ обнаружения прокси-сервера, это работает для меня, но это уязвимость безопасности, если вы, например, устанавливаете пакеты в чужой сети.

С сервера, который вы можете сообщить в сеть, есть экземпляр apt-cacher-ng через avahi.

С помощью клиента вы можете проверить, существует ли служба apt-cacher-ng, и соответственно изменить настройки прокси apt.


сервер

устанавливать

$ sudo apt-get install apt-cacher-ng squid-deb-proxy-client

Для выпусков Ubuntu старше 14.04 поместите следующий фрагмент в /etc/avahi/services/apt-cacher-ng.service:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">apt-cacher-ng proxy on %h</name>
 <service protocol="ipv4">
  <type>_apt_proxy._tcp</type>
  <port>3142</port>
 </service>
</service-group>

клиент

устанавливать

$ sudo apt-get install squid-deb-proxy-client

Вот фрагмент кода для установки сервера | клиента в зависимости от того, есть ли уже прокси apt-get или нет:

Источник: http://blog.surgut.co.uk/2013/03/avahi-apt-cacher-ng-sbuild.html

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

Другие вопросы по тегам