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

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

Eu uso o Debian 6. Estou atrás de um proxy, então configurei o Debian para usar esse proxy. A navegação e qualquer atividade HTTP e FTP através da GUI funcionam 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 parará ao tentar acessar o servidor FTP do Debian, e esta ação eventualmente expirará.

Mas se tentar:

$ su
# aptitude

obras de atualização.

Qual é a diferença entre as duas invocações? As variáveis ​​de ambiente $http_proxye $ftp_proxyexistem em ambos os shells.

Responder1

OsuO comando inicia outro shell como root (ou quem quer que seja, se você fornecer um nome de usuário e uma senha correta). 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.

OsudoO comando REMOVE TODAS as variáveis ​​de ambiente, exceto um subconjunto especificamente escolhido... que obviamente NÃO inclui as variáveis ​​HTTP_PROXY e FTP_PROXY, portanto, seus comandos falham.

Você pode fazersudomantenha as variáveis ​​​​*_PROXY editando o arquivo de configuração sudoers, usando ovisualcomando (é claro).

Adicionar o seguinte farásudomantenha os valores de HTTP_PROXY e FTP_PROXY:

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

Coincidentemente, se você adicionar DISPLAY & HOME a essa lista, você também poderá usar programas GUI com sudo (eles precisam da variável DISPLAY para se conectar)

Defaults env_keep += "DISPLAY HOME"

Você pode até adicionar essas duas linhas, assim. (O+=é a chave aqui) Lembre-se de adicionar essas linhas no final do arquivo, pois nas primeiras linhas geralmente define o 'env_keep'variável com uma reta'=', que apaga qualquer valor anterior.

Responder2

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

Se a configuração http_proxynão funcionar, tente editar apt.conf. No
Ubuntu apt.confestá fragmentado em /etc/apt/apt.conf.d/diretório.
Neste diretório edite /etc/apt/apt.conf.d/01ubuntu:

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};

informação relacionada