Fazendo o aptitude funcionar corretamente através de um proxy chamado com sudo

3

Eu uso o Debian 6. Eu estou sentado atrás de um proxy, então eu configurei o Debian para usar esse proxy. Navegação e qualquer atividade HTTP e FTP através da GUI funciona bem.

Eu queria atualizar meu repositório de pacotes, então digitei um shell:

sudo aptitude

então, se eu tentar atualizar o repositório (pressionando 'u'), o aptitude para ao tentar acessar o servidor FTP do debian, e essa ação acabará expirando.

Mas se tentar:

$ su
# aptitude

atualizando trabalhos.

Qual é a diferença entre as duas invocações? As variáveis de ambiente $http_proxy e $ftp_proxy existem nos dois shells.

    
por karatedog 05.07.2012 / 17:33

2 respostas

2

O comando su inicia outro shell como root (ou quem, se você fornecer um nome de usuário e senha corretos). Este shell obtém todas as variáveis de ambiente normais, o que obviamente inclui as variáveis HTTP_PROXY e FTP_PROXY. Assim funciona.

O comando sudo REMOVE TODAS as variáveis de ambiente, exceto para um subconjunto especificamente escolhido ... o que obviamente NÃO inclui o HTTP_PROXY & Variáveis FTP_PROXY, assim seus comandos falham.

Você pode fazer o sudo manter as variáveis * _PROXY editando o arquivo de configuração do sudoers, usando o comando visudo (é claro).

Adicionando o seguinte fará sudo manter os valores de HTTP_PROXY & FTP_PROXY:

Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"

Por coincidência, se você adicionar DISPLAY & HOME para aquela lista, você pode usar programas gui com sudo também (eles precisam da variável DISPLAY para conectar)

Defaults env_keep += "DISPLAY HOME"

Você pode até mesmo adicionar essas duas linhas, assim. (A + = é a chave aqui) Lembre-se de adicionar essas linhas ao final do arquivo, já que nas primeiras poucas linhas ele geralmente define a variável ' env_keep ' com um straight ' = ', que apaga qualquer valor anterior.

    
por 06.07.2012 / 07:07
2

Eu estava lutando com isso sozinho e finalmente fui com a solução proposta no Ask Ubuntu: O apt-get não funciona com proxy

If setting http_proxy does not work try editing apt.conf. In
Ubuntu apt.conf is fragmented in /etc/apt/apt.conf.d/ directory.
In this directory edit /etc/apt/apt.conf.d/01ubuntu:

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};
    
por 05.07.2012 / 17:41