Seguindo as instruções da melhor maneira de armazenar em cache os downloads apt em uma LAN? , Configurei um proxy de cache na minha rede local. Como essa máquina nem sempre está funcionando, eu gostaria de poder atualizar a lista de fontes e instalar pacotes sem usar esse proxy, se não estiver disponível.
Eu já li a seção Adquirir grupo na página de manual apt.conf(5)
, mas não consegui encontrar uma opção como "Silent-Fail".
No momento, sudo apt-get update
os comandos relacionados falham porque nenhuma conexão pôde ser estabelecida. Então, como configuro o cliente para que o proxy seja ignorado se não estiver disponível?
networking
apt
proxy
Lekensteyn
fonte
fonte
Respostas:
Há uma configuração não documentada
Acquire::http::ProxyAutoDetect
,. Essa configuração deve conter o caminho completo para o binário e não pode ter argumentos. O comando deve gerar o proxy a ser usado (exemplohttp://10.0.0.1:8000
:).Dadas as informações acima, pode ser criado um script que tente um proxy antes de defini-lo. Se nenhum proxy estiver disponível, uma conexão direta deve ser usada.
Abaixo é tal script de detecção de proxy de um que tenta o
http://10.0.0.1:8000/
ehttp://10.0.0.2:8000
proxies.Coloque o código em
/etc/apt/detect-http-proxy
:Agora, o APT deve ser configurado para usar o script de detecção de proxy acima, portanto, coloque o seguinte código em
/etc/apt/apt.conf.d/30detectproxy
:Também coloquei o próximo código no arquivo para impedir que algum host seja proxy.
Por padrão, o script gera se um proxy é usado ou não. Para desativar isso, edite
/etc/apt/detect-http-proxy
e mudeshow_proxy_messages=1
parashow_proxy_messages=0
.fonte
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
. Vamos apenas esperar que o recurso não documentado é removido :)i=192.168.0.2;nc -zw1 $i 3142&&echo http://$i:3142/||echo DIRECT
: pAgora existe uma maneira oficialmente suportada de fazer isso - usando a opção -
Acquire::http::Proxy-Auto-Detect
(consulte aapt.conf
página de manual). O comportamento é semelhante ao antigo não documentadoAcquire::http::ProxyAutoDetect
(observe a presença / ausência de hífens nas novas / antigas opções de configuração), é amplamente compatível com versões anteriores, mas foi estendido ...Estou no processo de enviar um patch aos mantenedores do apt para melhorar a documentação, mas como é improvável que isso se transforme em uma versão do apt que é fornecida com uma distribuição por um bom tempo, incluirei o texto de o patch proposto aqui:
Acquire::http::Proxy-Auto-Detect
pode ser usado para especificar um comando externo para descobrir o proxy http a ser usado. O APT pode chamar o comando várias vezes e passará um URI para o comando como seu primeiro e único parâmetro. O APT espera que o comando produza o proxy que deve ser usado para contatar o URI em questão em seu stdout como uma única linha no estilohttp://proxy:port/
, ou a palavraDIRECT
se nenhum proxy deve ser usado. Nenhuma saída indica que as configurações genéricas de proxy devem ser usadas.Observe que a detecção automática não será usada para um host se uma configuração de proxy específica do host já estiver definida via
Acquire::http::Proxy::HOST
.Para diagnosticar interações com o comando externo, defina
Debug::Acquire::http=yes
e / ou,Debug::Acquire::https=yes
por exemplo, usando o-o
parâmetro da linha de comandos.Note que se está usando uma versão de pré-lançamento do apt, versões 1.3 ~ exp2 a 1.3, existe um erro (provavelmente corrigido pelo 1.3.1) que faz com que o apt analise o stderr do comando externo junto com o stdout.
fonte
/etc/apt/apt.conf.d/02proxy
:/usr/local/bin/apt-proxy-detect.sh
:Linha de comando
nc
funcionar (sudo apt-get install netcat
) se estiver ausente.chmod +x /usr/local/bin/apt-proxy-detect.sh
Como funciona
Se ele pode se conectar a um proxy, ele imprime o proxy que o APT usa. Se não puder, imprime os checagens DIRECT e APT normalmente.
molho
fonte