Como executar o "sudo apt-get update" através do proxy na linha de comando?

Respostas:

91

Em algumas versões, o sudo é configurado de tal maneira que todas as variáveis ​​de ambiente são limpas ao executar o comando. Para manter o valor do seu http_proxy e corrigir isso, você precisa editar o / etc / sudoers, execute:

visudo

Em seguida, encontre uma linha que declare:

Defaults env_reset 

e adicione depois:

Defaults env_keep = "http_proxy ftp_proxy" 

As coisas começarão a funcionar como esperado.

Obrigado a kdogksu nos Fóruns do Ubuntu por encontrar a solução para isso.

Para não apenas corrigir o apt-get, mas também os utilitários gráficos do X11, como por exemplo: synaptic, mintintall, ...), a seguinte linha /etc/sudoersdeve fazer o trabalho:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
paulo.albuquerque
fonte
7
Seria necessário adicionar "https_proxy" também?
precisa saber é o seguinte
2
$ Export http_proxy = " user: password @ servidor proxy: port " e se sua senha contém caracteres especiais - cyberciti.biz/faq/...
Alex Punnen
2
'env_keep' deve ser adicionado após 'env_reset' ou colocado em seu lugar? Eles parecem opostos um ao outro, então há sentido em manter os dois?
Rodrigo Rodrigo
Padrões env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" funcionou para mim! Obrigado ! -
Ronald
1
Tropeçou nisso depois de muita navegação. Isso resolveu meu problema.
Sudipta Basak 13/01
40

Usa isto.

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:[email protected]:8080";

É isso que eu uso. Funciona perfeitamente.

O Apt também permite que configurações individuais sejam colocadas nos arquivos abaixo /etc/apt/apt.conf.d/, portanto isso tem exatamente o mesmo efeito que o descrito acima, mas pode ser mais fácil de manter se você tiver outras linhas no .confarquivo:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:[email protected]:8080";
John Cartwright
fonte
5
Eu recomendo editar isso para explicar como adicionar essa linha ao arquivo de configuração. Tentar executar essas linhas na linha de comando não fará isso. No momento, essa resposta é baseada em uma idéia correta, mas não será útil para iniciantes. Não é mesmo totalmente claro que você está dizendo que a linha deve ser adicionado a apt.conf.
Elias Kagan
impressionante !!!! funciona como charme
Shantanu Bedajna
No meu sistema, tive que criar um arquivo em /etc/apt/apt.conf.d, mas pequenos detalhes - funcionaram muito bem
dldnh 12/02/16
1
@dldnh: Você pode criar o arquivo /etc/apt/apt.confou usar um arquivo de configuração em /etc/apt/apt.conf.d.... ou funciona! :-)
Paul Calabro
não esqueça o ponto-e-vírgula ou você teráE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane
18

O que funcionou para mim foi:

sudo http_proxy=http://yourserver apt-get update

O que é um pouco estranho, porque simplesmente exportar http_proxy e, em seguida, executar o sudo echo $ http_proxy, obedientemente, imprimiu o valor exportado

Sam
fonte
1
$http_proxyé expandido antes mesmo que o sudo seja executado.
list
1
Isso funcionou muito bem em um Dockerfile!
Cory Ringdahl
Não esqueça a porta para o proxy, se necessário :)
Gilad Peleg
11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

A exportação não deve ser necessária sudoe, se o seu proxy for anônimo, apenas abandone a proxyusername:proxypassword@peça.

Oli
fonte
:-(, estou recebendo o erro "Acesso ao serviço de proxy da web negado!"
Renjith G 15/10/10
As mesmas configurações de proxy funcionam para algo simples como wget?
Oli
sim ..o mesmo erro repetindo ...
Renjith G
2
Que tal editar o /etc/apt/apt.conf com o Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: [email protected]: MYPORT"?
precisa
Você também pode adicionar isso ao seu ~ / .bashrc. Risco de segurança horrível embora.
Scaine
3

Se for uma configuração temporária , você pode tentar o seguinte: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

Você precisa disso, porque a variável de ambiente precisa ser definida para a conta "raiz". Fazer e exportar antes não deve funcionar.

Para uma configuração permanente , você precisará modificar um arquivo do sistema. Isso já está descrito na resposta a seguir sobre Como verificar se o proxy de rede é realmente aplicado? .

Huygens
fonte
:-(, estou recebendo o erro "Acesso ao serviço de proxy da web negado!"
Renjith G 15/10/10
Você provavelmente precisa digitar um login e senha, não é? Nesse caso, o http_proxy deve ter o formato "http: // <usuário>: <passe> @ <host>: <porta> /"
Huygens
3

O Ubuntu é incrivelmente hostil à autenticação de proxies. Eu uso um laptop Ubuntu no trabalho e o número de quebras é incrível.

Synaptic, Apt, Firefox, Chromium, etc, usam métodos diferentes para especificar um proxy e não há lugar para especificar credenciais com segurança.

Alguns erros no assunto: https://bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070

https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138

https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827

https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630

A sugestão de Oli de usar uma exportação é a única maneira vagamente segura de fazê-lo. Às vezes, também é possível "falsificar" o suporte a proxy se o servidor proxy estiver usando autenticação secundária para minimizar a carga nos principais servidores de autenticação (por exemplo, talvez o Active Directory). É aqui que a primeira conexão de proxy é autenticada pelo proxy no AD e, por um período de tempo definido (geralmente 5 minutos), todas as outras conexões são "confiáveis" para esse usuário. Portanto, você pode abrir o firefox, navegar na Internet (em qualquer lugar) e tentar o seu utilitário (wget, synaptic, o que for) especificando um proxy, mas deixe o nome de usuário em branco.

O Ubuntu geralmente é hostil a qualquer ambiente corporativo simplesmente porque permite que as senhas sejam lidas com tanta facilidade. O Seahorse é o principal culpado, mas o Network Manager também é chocante - conecte-se a qualquer rede autenticada pelo PEAP e você acabou de armazenar sua senha no miniaplicativo para qualquer um ver quem pode emprestar seu laptop. Aparentemente, o compartilhamento de laptop é considerado sacrilégio em terras Linux, já que os desenvolvedores do Seahorse rejeitaram alegações de insegurança. Depois disso, não tive coragem de entrar em contato com os desenvolvedores do gerenciador de rede.

Scaine
fonte
Eu recomendo o cntlm como uma cura para isso. Ele lida com a autenticação com o AD e você define todas as suas configurações de proxy para usar 127.0.0.1 sem exigir credenciais.
laz
Se você precisar se autenticar com outra máquina, o texto sem formatação da senha precisará ser armazenado. "criptografia" não adicionaria nenhuma segurança, porque a chave de criptografia precisa ser armazenada no mesmo dispositivo para que as senhas estejam disponíveis.
amigos estão
Jeremy, você está adotando a mesma abordagem de segurança que os Seahorse desenvolvem. Não estou dizendo para tornar essas coisas impossíveis, apenas dificulte. No momento, roubar credenciais de um laptop Ubuntu desbloqueado é trivial - talvez cinco cliques e você tenha. O mesmo não se aplica ao Windows - ainda é possível, mas nem eu saberia como fazê-lo. Não há uma maneira simples de levantar uma senha de uma máquina Windows nos 10 minutos, ou então você poderá deixar uma estação de trabalho desbloqueada por acidente. Faça o mesmo no Ubuntu e você também pode entregar sua demissão. Não é bom o suficiente.
Scaine
3

Você tentou editar /etc/apt/apt.conf? Eu uso isso para usar o apt atrás do nosso proxy corporativo.

Acquire::http::proxy "http://user:password@host:port/";

Acredito que o apt use esse valor, a menos que $ http_proxy seja definido em seu ambiente shell (ou seja, $ http_proxy tem precedência).

Jon Brett
fonte
Não tenho certeza se o apt.conf ainda está em uso ... Quando atualizei de 8.04 para 10.04, acabei com uma atualização impossível, até me livrar das configurações de proxy nesse arquivo - as configurações de proxy definidas no Synaptic começaram a trabalhar de novo ...
Pouco Jawa
Isso é estranho - eu uso o apt.conf com 10.04. Acho que as configurações deste arquivo são separadas daquelas definidas na GUI de preferências do gerenciador de pacotes Synaptic.
Jon Brett
1
Sim, apt.confainda deve ser usado. Você pode ver quais definições de configuração o apt acha que definiu usando apt-config dump.
Steve Beattie
1

Se você deseja executar "sudo apt-get update" por meio de proxy na linha de comando, use o comando abaixo,

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Prashant Adlinge
fonte