APT com Proxy no Debian e Ubuntu

Se seu computador está atrás de um proxy para acesso à Internet, você deve configurar o proxy no APT para que ele possa realizar as atualizações e instalações de softwares.

Se você usa apenas a interface gráfica, configure diretamente no synaptic. Esta dica cobre apenas os usuários mais avançados e que gostam da linha de comando…

Para configurar o proxy, devemos criar um arquivo com as configurações necessárias. No Debian e derivados (como o Ubuntu), o APT carrega as configurações do diretório /etc/apt. Neste diretório, há um subdiretório que pode ser usado para adicionar configurações específicas, que é o diretório /etc/apt/apt.conf.d. Ao invés de alterar o arquivo de onfiguração padrão do APT, podemos adicionar arquivos de configuração neste diretório, facilitando a adminsitração.

Neste exemplo, vamos considerar que o proxy exige autenticação. Se o proxy não exigir autenticação, basta remover as configurações de usuário e senha dos exemplos.

Nos exemplos a seguir, substitua os campos USUARIO, SENHA, IP_DO_PROXY e PORTA pelos valores de seu ambiente. Crie o arquivo /etc/apt/apt.conf.d/80proxy e adicione a seguinte configuração:

Acquire {
  Retries "0";
  HTTP {
    Proxy "http://USUARIO:SENHA@IP_DO_PROXY:PORTA";
  };
};

Importante: esta configuração trás o uma brecha na segurança: por padrão, todos os arquivos do diretório /etc/apt/apt.conf.d são acessíveis por todos os usuários, expondo o nome de um usuário e a sua senha. Como a atualização de software é realizada apenas pelo administrador, podemos restringir o acesso ao arquivo de configuraçao do proxy:

chown root:root /etc/apt/apt.conf.d/80proxy
chmod 600 /etc/apt/apt.conf.d/80proxy

Esta configuração resolve parte do problema: o APT usa o wget para realizar o download dos pacotes e listas de pacotes. Então, precisamos configurar o wget para uso com proxy. No meu caso, bastou adicionar as seguintes configurações no arquivo /etc/wgetrc:

ftp_proxy = http://IP_DO_PROXY:PORTA/
http_proxy = http://IP_DO_PROXY:PORTA/
proxy_user = USUARIO
proxy_passwd = SENHA
use_proxy = on

Importante: esta configuração, sofre do mesmo problema já descrito: a senha fica exposta a acesso público, pois o arquivo /etc/wgetrc é acessível por todos os usuários. Se o wget não for utilizado por outros usuários, basta restringir o acesso ao arquivo ao root:

chown root:root /etc/wgetrc
chmod 600 /etc/wgetrc

Se isto não for possível, isto é, o wget for utilizado por outros usuários que não o root, então pode-se adicionar as configurações de proxy por usuário, no arquivo .bash_profile de cada usuário da seguinte forma (adicione no final do arquivo):

http_proxy="http://USUARIO:SENHA@IP_DO_PROXY:PORTA"
ftp_proxy="http://USUARIO:SENHA@IP_DO_PROXY:PORTA"
export http_proxy ftp_proxy

Espero ter ajudado.

Marião