Я использую apt-cacher-ng
в своей локальной сети со следующей конфигурацией на клиентах:
Acquire::http { Proxy "http://acng-host:3142"; };
Некоторые клиенты являются ноутбуками, поэтому как мне настроить их на использование кэша только в том случае, если это доступно в этой сети?
Не точный ответ, так как вам придется изменить существующую настройку кеша, но squid-deb-proxy
является хорошим решением для предоставления кеша, который будет использоваться прозрачно, если он доступен, и его очень легко настроить на оба кеша сервер и клиенты. См. первый ответ на этот вопрос для более подробной информации.
С сервера вы можете сообщить в сеть, что через avahi имеется экземпляр apt-cacher-ng
. С клиента вы можете проверить, существует ли apt-cacher-ng service и соответственно измените настройки прокси apt.
Установка
$ sudo apt-get install apt-cacher-ng squid-deb-proxy-client
Для выпусков Ubuntu старше 14.04 поместите следующий фрагмент в /etc/avahi/services/apt-cacher-ng.service: [ 1111]
<?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
Примерно так должно работать:
/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
Исправить права доступа
[ 111]Примечания: