Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I use Debian 6. I'm sitting behind a proxy, so I configured Debian to use that proxy. Browsing and any HTTP and FTP activity through GUI works OK.

I wanted to update my package repository so I typed in a shell:

sudo aptitude

then if I try to update the repo (pressing 'u') aptitude stops while trying to reach debian's FTP server, and this action will eventually time out.

But if it try:

$ su
# aptitude

updating works.

What is the difference between the two invocation? The $http_proxy and $ftp_proxy environment variables exist in both shells.

share|improve this question
up vote 2 down vote accepted

The su command starts another shell as root (or whomever if you supply a username and correct password). This shell gets all the normal environment variables, which of course includes the HTTP_PROXY and FTP_PROXY variables. Thus it works.

The sudo command REMOVES ALL environment variables except for a specifically chosen subset... which of course does NOT include the HTTP_PROXY & FTP_PROXY variables, thus your commands fail.

You can make sudo keep the *_PROXY variables by editing the sudoers config file, using the visudo command (of course).

Adding the following will make sudo keep the values of HTTP_PROXY & FTP_PROXY:

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

Coincidentally, if you add DISPLAY & HOME to that list, you can use gui programs with sudo too (they need the DISPLAY variable to connect)

Defaults env_keep += "DISPLAY HOME"

You can even just add those two lines, like that. (The += is the key here) Remember to add these lines towards the end of the file, since in the first few lines it usually sets the '*env_keep*' variable with a straight '=', which erases any previous value.

share|improve this answer
geez, I need to read documentation :-) thanks, worked perfectly. – karatedog Jul 6 '12 at 10:01

I was struggling with this myself and finally went with the solution proposed on Ask Ubuntu: apt-get does not work with 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:

  Acquire {
      http {
          Proxy "http://user:password@server:port";
share|improve this answer
This is a fixed setting. I tried this, and it is useless for notebooks that move among different networks (it won't fall back to direct connection if it cannot find the proxy) – karatedog Jul 6 '12 at 9:52

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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