Vous suivez les instructions de la meilleure façon de mettre en cache les téléchargements apt sur un réseau local? , J'ai configuré un proxy de mise en cache sur mon réseau local. Étant donné que cette machine n'est pas toujours opérationnelle, j'aimerais pouvoir actualiser la liste des sources et installer des packages sans utiliser ce proxy s'il n'est pas disponible.
J'ai déjà lu la section Acquérir un groupe dans la page de manuel de apt.conf(5)
, mais je n'ai pas trouvé une option comme "Silent-Fail".
Pour le moment, sudo apt-get update
les commandes associées échouent car aucune connexion n'a pu être établie. Alors, comment puis-je configurer le client pour que le proxy soit ignoré s'il n'est pas disponible?
networking
apt
proxy
Lekensteyn
la source
la source
Réponses:
Il y a un cadre sans papier,
Acquire::http::ProxyAutoDetect
. Ce paramètre doit contenir le chemin d'accès complet au binaire et ne doit pas avoir d'arguments. La commande doit sortir le proxy à utiliser (exemple:)http://10.0.0.1:8000
.Compte tenu des informations ci-dessus, un script pourrait être créé pour essayer un proxy avant de le définir. Si aucun proxy n'est disponible, une connexion directe doit être utilisée.
Vous trouverez ci-dessous un tel script de détection de proxy qui essaie les proxy
http://10.0.0.1:8000/
ethttp://10.0.0.2:8000
.Mettez le code dans
/etc/apt/detect-http-proxy
:Maintenant, APT doit être configuré pour utiliser le script de détection de proxy ci-dessus, alors entrez le code suivant
/etc/apt/apt.conf.d/30detectproxy
:J'ai également mis le code suivant dans le fichier pour éviter qu'un hôte ne soit mandaté.
Par défaut, le script affiche si un proxy est utilisé ou non. Pour désactiver cela, modifiez
/etc/apt/detect-http-proxy
et changezshow_proxy_messages=1
enshow_proxy_messages=0
.la source
apt-cacher-ng::client
?if nc -w1 -z 192.168.0.2 3142; then printf http://192.168.0.2:3142; else printf DIRECT; fi
. Espérons juste que la fonctionnalité non documentée sera supprimée :)i=192.168.0.2;nc -zw1 $i 3142&&echo http://$i:3142/||echo DIRECT
: pIl existe maintenant un moyen officiellement pris en charge pour ce faire - en utilisant l'option -
Acquire::http::Proxy-Auto-Detect
(voir laapt.conf
page de manuel). Le comportement est similaire à l'ancien non documentéAcquire::http::ProxyAutoDetect
(notez la présence / l'absence de tirets dans les nouvelles / anciennes options de configuration), il est largement rétrocompatible, mais a été étendu ...Je suis en train de soumettre un correctif aux mainteneurs d'apt pour améliorer la documentation, mais comme il est peu probable que cela devienne une version d'apt livrée avec une version de distribution pendant un certain temps, je vais inclure le texte de le patch proposé ici:
Acquire::http::Proxy-Auto-Detect
peut être utilisé pour spécifier une commande externe pour découvrir le proxy http à utiliser. APT peut invoquer la commande plusieurs fois et transmettra un URI à la commande comme premier et seul paramètre. APT s'attend à ce que la commande génère le proxy qui doit être utilisé pour contacter l'URI en question sur sa sortie standard sous la forme d'une seule ligne dans le stylehttp://proxy:port/
, ou le motDIRECT
si aucun proxy ne doit être utilisé. Aucune sortie n'indique que les paramètres de proxy génériques doivent être utilisés.Notez que la détection automatique ne sera pas utilisée pour un hôte si une configuration de proxy spécifique à l'hôte est déjà définie via
Acquire::http::Proxy::HOST
.Pour diagnostiquer les interactions avec la commande externe, définissez
Debug::Acquire::http=yes
et / ouDebug::Acquire::https=yes
par exemple en utilisant le-o
paramètre de ligne de commande.Notez que vous utilisez une version préliminaire d'apt, les versions 1.3 ~ exp2 à 1.3, puis il y a un bogue (probablement corrigé par 1.3.1) qui oblige apt à analyser le stderr de la commande externe avec la stdout.
la source
/etc/apt/apt.conf.d/02proxy
:/usr/local/bin/apt-proxy-detect.sh
:Ligne de commande
nc
fonctionner (sudo apt-get install netcat
) s'il est manquant.chmod +x /usr/local/bin/apt-proxy-detect.sh
Comment ça fonctionne
S'il peut se connecter à un proxy, il imprime le proxy qu'APT utilise. Si ce n'est pas le cas, il imprime les chugs DIRECT et APT normalement.
sauce
la source