Siguiendo las instrucciones de la mejor manera de almacenar en caché las descargas de apt en una LAN , Configuré un proxy de almacenamiento en caché en mi red local. Dado que esa máquina no siempre está activa, me gustaría poder actualizar la lista de fuentes e instalar paquetes sin usar ese proxy si no está disponible.
Ya leí la sección Adquirir grupo en la página del manual de apt.conf(5)
, pero no pude encontrar una opción como "Silent-Fail".
Por el momento, sudo apt-get update
y los comandos relacionados fallan porque no se pudo establecer una conexión. Entonces, ¿cómo configuro el cliente para que se ignore el proxy si no está disponible?
networking
apt
proxy
Lekensteyn
fuente
fuente
Respuestas:
Hay una configuración no documentada,
Acquire::http::ProxyAutoDetect
. Esta configuración debe contener la ruta completa al binario y no puede tener argumentos. El comando debe generar el proxy que se utilizará (ejemplo:)http://10.0.0.1:8000
.Dada la información anterior, se podría crear un script que pruebe un proxy antes de configurarlo. Si no hay un proxy disponible, se debe usar una conexión directa.
A continuación se muestra un script de detección de proxy que prueba el
http://10.0.0.1:8000/
yhttp://10.0.0.2:8000
proxys .Pon el código en
/etc/apt/detect-http-proxy
:Ahora, APT debe estar configurado para usar el script de detección de proxy anterior, por lo tanto, ingrese el siguiente código
/etc/apt/apt.conf.d/30detectproxy
:También puse el siguiente código en el archivo para evitar que algún host sea proxificado.
Por defecto, el script muestra si se usa un proxy o no. Para deshabilitar eso, edite
/etc/apt/detect-http-proxy
y cambieshow_proxy_messages=1
ashow_proxy_messages=0
.fuente
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
. Esperemos que la característica indocumentada se elimine :)i=192.168.0.2;nc -zw1 $i 3142&&echo http://$i:3142/||echo DIRECT
: pAhora hay una forma oficial de hacer esto, usando la opción
Acquire::http::Proxy-Auto-Detect
(vea laapt.conf
página de manual). El comportamiento es similar al antiguo indocumentadoAcquire::http::ProxyAutoDetect
(nota presencia / ausencia de guiones en las opciones de configuración nuevas / antiguas), es en gran medida compatible con versiones anteriores, pero se ha extendido ...Estoy en el proceso de enviar un parche a los mantenedores de apt para mejorar la documentación, pero dado que es poco probable que sea una versión de apt que se envíe con un lanzamiento de distribución durante bastante tiempo, incluiré el texto de El parche propuesto aquí:
Acquire::http::Proxy-Auto-Detect
se puede usar para especificar un comando externo para descubrir el proxy http que se usará. APT puede invocar el comando varias veces y pasará un URI al comando como su primer y único parámetro. APT espera que el comando muestre el proxy que se usará para contactar al URI en cuestión en su stdout como una sola línea en el estilohttp://proxy:port/
, o la palabraDIRECT
si no se debe usar un proxy. Ningún resultado indica que se debe usar la configuración genérica del proxy.Tenga en cuenta que la detección automática no se utilizará para un host si ya se ha configurado una configuración de proxy específica del host a través de
Acquire::http::Proxy::HOST
.Para diagnosticar interacciones con el comando externo, configure
Debug::Acquire::http=yes
y / o,Debug::Acquire::https=yes
por ejemplo, utilice el-o
parámetro de línea de comando.Tenga en cuenta que está utilizando una versión preliminar de apt, versiones 1.3 ~ exp2 a 1.3, luego hay un error (probablemente corregido por 1.3.1) que hace que apt analice el stderr del comando externo junto con el stdout.
fuente
/etc/apt/apt.conf.d/02proxy
:/usr/local/bin/apt-proxy-detect.sh
:Línea de comando
nc
que funcionar (sudo apt-get install netcat
) si falta.chmod +x /usr/local/bin/apt-proxy-detect.sh
Cómo funciona
Si puede conectarse a un proxy, imprime el proxy que APT usa. Si no puede, imprime CHUG DIRECTOS y APT normalmente.
salsa
fuente