apt-get não funciona atrás de um proxy

4

Minha empresa usa um proxy HTTP e, portanto, nossos vários servidores Ubuntu 12.04 precisam ser configurados corretamente, ou seja, configurando \etc\apt\apt.conf.dproxy para:

Acquire::http::Proxy "http://proxy.mycompany.com:80";

Acquire::http::No-Cache true;

Agora, desde alguns dias, esse método parou de funcionar: acabei encontrando erros de incompatibilidade de soma. Eu tentei todos os truques habituais encontrados em stackoverflow ou na web , entre outros:

sudo rm -fR /var/lib/apt/lists/*
sudo apt-get clean

Mas nada parece funcionar. Eu até mudei para um servidor FTP, sem qualquer sorte. O que é uma solução radical para esse problema? É provável que o servidor proxy tenha algum tipo de problema? O que poderia ser?

Usando o Ubuntu 12.04

    
por Greg 05.02.2014 / 21:53

5 respostas

5

Para usar o apt-get através de um proxy, eu faço o seguinte - você precisa ser capaz de acessar a internet (por exemplo, através de um navegador como o Firefox):

sudo apt-get --print-uris install PROGRAM

Isto imprime os urls (e outras informações como md5sums) dos pacotes necessários para realizar a instalação, para que você possa baixá-los. Por exemplo, usando supertux :

wilf@comp:~$ sudo apt-get install --print-uris supertux
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  supertux-data
The following NEW packages will be installed
  supertux supertux-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 59.4 MB of archives.
After this operation, 80.0 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
'http://gb.archive.ubuntu.com/ubuntu/pool/universe/s/supertux/supertux-data_0.3.3-6_all.deb' supertux-data_0.3.3-6_all.deb 58590640 MD5Sum:68bd36f2c262f7caed1b5c947977202a
'http://gb.archive.ubuntu.com/ubuntu/pool/universe/s/supertux/supertux_0.3.3-6_i386.deb' supertux_0.3.3-6_i386.deb 804782 MD5Sum:a49c6c3c918bae2c968b3da6ac725b06

Em seguida, faça o download dos arquivos .deb dos links fornecidos (de preferência em uma pasta vazia), através de um navegador que funcione através do proxy, etc., e você poderá instalá-los usando o Centro de Software; ou usando cd /FOLDER/WITH/DOWNLOADED-DEB-FILES e um desses comandos no terminal

dpkg -i *.deb
gdebi *.deb 

Isso é um pouco lento e chato, mas parece funcionar com proxies HTTP. Você também pode obter os pacotes do link

    
por Wilf 05.02.2014 / 23:55
14

Descobri que o seguinte funciona para mim, no que diz respeito ao uso do apt apenas do terminal:

  1. Deixe /etc/apt/apt.conf empty, para que o apt volte para as variáveis de ambiente $*_proxy .
  2. Certifique-se de que suas variáveis de ambiente estão configuradas corretamente: Por exemplo, você pode adicionar o .bashrc:

    http_proxy="http://username:password@proxyserver:port"
    # And so on for other proxy settings like https_proxy and ftp_proxy
    

    Se seu nome de usuário ou senha contiverem caracteres especiais, eles talvez precisem ser URL codificado .

  3. Faça o sudo usar suas variáveis de ambiente e não as próprias. Isso é feito editando o arquivo /etc/sudoers . Tenha cuidado ao fazer isso! Use somente o comando sudo visudo para editar o arquivo; quaisquer erros podem deixar você incapaz de entrar novamente no modo sudo! Adicione o seguinte:

    Defaults env_keep+="http_proxy https_proxy ftp_proxy socks_proxy"
    

    Isso garante que o sudo retenha essas variáveis ao executar sudo apt-get install ... etc.

Eu descobri isso a partir do howto do apt-get do Ubuntu .

Deixe-me saber se funciona:)

    
por Praveen 22.02.2014 / 11:10
2

Para adicionar ao Wilf, executei o seguinte comando para automatizar o download por meio do Chrome. Firefox, eu entendo pode ser ainda mais simples.

yes | sudo apt-get --print-uris install PROGRAM-NAME-HERE | grep http | awk '{print  }' | tr -d \' | while read -r line; do google-chrome "$line"; done

EDIT: então a resposta toda será em um post, uma vez que o download acabe simplesmente

cd /FOLDER/WITH/DOWNLOADED-DEB-FILES; dpkg -i *.deb
    
por Yitzhak Goldstine 04.06.2015 / 17:27
1

Eu não sei se você já tentou isso, mas e:

export http_proxy=proxy.mycompany.com:80

Você pode verificá-lo depois com:

echo $http_proxy
    
por zappendappen 06.02.2014 / 10:28
0

Uma armadilha aqui é que, depois de configurar seu proxy como usuário sem privilégios, você executa

sudo apt-get install REQUIRED_PACKAGE

onde REQUIRED_PACKAGE é o software que você deseja instalar e você ainda vê que ele trava ao entrar em contato com a máquina além do seu proxy, então provavelmente você irá passar -E para o comando sudo da seguinte forma ...

sudo -E apt-get install REQUIRED_PACKAGE

Isso tem o efeito de executar seu comando como root usando seu ambiente atual (suas configurações de ambiente de proxy)

    
por Rob 25.01.2017 / 11:54