web-dev-qa-db-fra.com

Comment utiliser apt-cacher-ng uniquement lorsque celui-ci est disponible?

J'utilise apt-cacher-ng sur mon réseau local avec la configuration suivante sur les clients:

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

Certains des clients sont des ordinateurs portables. Comment puis-je les configurer pour utiliser le cache uniquement lorsqu'il est disponible sur ce réseau?

5
itshorty

Quelque chose comme ça devrait marcher:

/ 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

autorisations fixes

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

Notes:

  • La commande "nc" teste qu’elle peut se connecter au port 3142 sur l’adresse IP donnée.
  • Ce script est exécuté chaque fois que les interfaces réseau sont modifiées par le gestionnaire de réseau.
  • N'hésitez pas à modifier la manière que vous détectez pour le proxy, cela fonctionne pour moi, mais il s'agit d'une vulnérabilité de sécurité si vous installez des packages sur un réseau étranger , par exemple.
5
dpb

Depuis le serveur , vous pouvez annoncer au réseau qu’il existe une instance apt-cacher-ng via avahi.

Depuis le client , vous pouvez vérifier s’il existe un service apt-cacher-ng et modifier les paramètres de proxy apt en conséquence.


Serveur

Installer

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

Pour les versions Ubuntu antérieures à 14.04, insérez l'extrait suivant dans /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>

Client

Installer

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

Voici un extrait pour installer server | client en fonction de l'existence ou non d'un proxy apt-get:

Source: http://blog.surgut.co.uk/2013/03/avahi-apt-cacher-ng-sbuild.html

5
Javier López