how can I set apt-get to work behind proxy?

3 Answers 3

http_proxy="http://host:port" apt-get something

should work.

If you require authentication, try

http_proxy="http://user:pass@host:port" apt-get something

And if you want this to be permenant, you should probably set the http_proxy (and ftp_proxy?) variables in your ~/.bashrc so that all of your proxy-capable applications will work in the future, e.g. 'wget'.

  • 2
    one more thing to note is that if the password contains '@' then replace it with '%40' (without quotes),else it will not work
    – dotslash
    Nov 6, 2011 at 9:16

in /etc/apt/apt.conf, add the line:


From: http://ubuntuforums.org/showthread.php?t=96802

(Note: completely stolen from this answer to my similar question on SF. Cred to Grizzly)

  • The line needs to end with a ;
    – Verma
    Dec 19, 2013 at 10:57
  • My filename was different but this is what worked for me /etc/apt/apt.conf.d/01proxy
    – Jackie
    Dec 30, 2015 at 15:57

A proxy is specified by setting the http_proxy, ftp_proxy and all_proxy environment variables, either locally (e.g. in ~/.bashrc) or globally (e.g. in /etc/bash.bashrc). These settings are honored by virtually all net-software packages (like apt-get, wget, curl etc.):

# HTTP proxy without authentification
export http_proxy="http://host:port"
# HTTP proxy with authentification
export http_proxy="http://user:pass@host:port"

However, setting them this way does not help when running sudo apt-get ... - and that is due to this line in /etc/sudoers:

Defaults env_reset

This line resets all environment variables when using sudo, for security reasons. In order to keep the values of http_proxy etc. in a sudo invocation, you can specify exceptions to env_reset via env_keep:

# Exception specific to the command apt-get
Defaults!/usr/bin/apt-get env_keep="http_proxy https_proxy ftp_proxy"
# Exception specific to the user joe
Defaults:joe env_keep="http_proxy https_proxy ftp_proxy"

This way, you get apt-get to honor the global setting for http_proxy, instead of duplicating the setting for apt-get in some arcane apt-specific config file.

  • This is the real answer in my opinion, because you will all the time use sudo apt-get ... for anything. So without this entry in /etc/sudoers, it will not work.
    – mliebelt
    Dec 24, 2013 at 8:42
  • This env_reset line is /etc/sudoers is really important!
    – Ari
    Sep 8, 2014 at 19:19
  • 1
    @Ari: Yes it is; that is why I showed how to disable it specifically for apt-get and specifically for the variables necessary, instead of saying "just remove the line".
    – DevSolar
    Sep 9, 2014 at 7:32
  • @DevSolar: yes, and plus 1 for that!
    – Ari
    Sep 9, 2014 at 17:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.