51

Possible Duplicate:
apt-get does not work with proxy

I have tried changing my proxy settings in a terminal as:

export HTTP_PROXY=http://10.1.3.1:8080

and

export http_proxy=http://10.1.3.1:8080

but when I try to install a new package or update apt-get, apt-get starts displaying messages from which it seems it is trying to connect to a previously set proxy:

sudo apt-get update  
0% [Connecting to 10.1.2.2 (10.1.2.2)] [Connecting to 10.1.2.2 (10.1.2.2)

I have tried setting the proxy via bashrc file but that din work either. As far as I remember 10.1.2.2 was set using GNOME GUI but I don't have access to the GUI right now so I am trying to set it from terminal.

5
  • you can add proxy in /etc/apt/apt.conf
    – Five
    Jul 2, 2012 at 8:48
  • @piyush Will that not only allow apt-get to access the web though..? If he wants to be able to access web with anything else he needs to enter it into /etc/bash.bashrc
    – LinuxBill
    Jul 2, 2012 at 8:52
  • true, I suggested that seeing him try to do sudo apt-get update
    – Five
    Jul 2, 2012 at 8:54
  • 1
    sudo -E apt-get WHATEVER works in my case (given that http_proxy is already exported as an environmental variable). Mar 14, 2015 at 4:03
  • Just a general tip -- when doing these updates, you may need to log out and back in before they start working. That's what I had to do. Jul 1, 2016 at 0:00

3 Answers 3

70

Okay just solved it. Adding following line to /etc/apt/apt.conf has solved the problem: Acquire::http::proxy "http://10.1.3.1:8080/";

If file does not exist, create it. Do not confuse it with apt.conf.d directory.

2
  • 8
    Great. The reason your manual export failed to affect apt-get is because sudo ignores that environment variable by default (i.e. it doesn't pass it on to the command). For one-off runs, you could do sudo env http_proxy=http://10.1.3.1:8080 apt-get update. Otherwise, you could configure sudo to allow http_proxy to fall through.
    – geirha
    Jul 2, 2012 at 10:08
  • also if proxy using authentication then provide the details as sudo env http_proxy=http://<userid>:<password>@10.1.3.1:8080 apt-get update Mar 13, 2020 at 5:31
63

The file:

/etc/environment

Is the correct place to specify system-wide environment variables that should be available to all processes. See https://help.ubuntu.com/community/EnvironmentVariables for details. Note that this is not a script file but a configuration file.

If you want this for the specified command only, use (as root):

http_proxy=http://10.1.3.1:8080 apt-get update
3
  • Great! Saved much of my time :)
    – Arun
    Jul 11, 2013 at 10:12
  • It is so good. thank you. It is just for temporary usage, Isn't it?
    – shgnInc
    Oct 17, 2013 at 5:45
  • Alas still not yet for Firefox 37.0.2.
    – user643722
    May 12, 2015 at 16:15
13

Edit your:

gedit /etc/profile

Enter the details in this format.

export http_proxy=http://username:password@proxyhost:port/ 
export ftp_proxy=http://username:password@proxyhost:port/

Then run the

sudo apt-get update

That should do it for you.

As stated above you can enter the proxy into apt.conf (Piyush Credit)

2
  • I have mentioned in my question that I tried setting the proxy via bashrc file and then tried source /etc/bash.bashrc but apt-get is still trying to access the old repository.
    – Uthman
    Jul 2, 2012 at 9:45
  • 3
    Besides that, /etc/bash.bashrc is the wrong place to set environment variables as it will only affect bash run interactively. Environment variables should be set in /etc/environment or /etc/profile.
    – geirha
    Jul 2, 2012 at 10:05

Not the answer you're looking for? Browse other questions tagged .