49

I'm trying to disable the proxy for apt-get but it seems like apt-get gets it's proxy configuration from somewhere else other than /etc/apt/apt.conf, because although the apt.conf file is empty (and the system proxy set to None) it's still trying to connect to the proxy.

Anyone got an idea?

Alaa Ali
  • 31,075
  • 11
  • 94
  • 105
Ahatius
  • 2,077
  • 6
  • 24
  • 25

8 Answers8

59

I'm using a script to replace different configuration files in order to easily switch between proxy and non-proxy environements. The problem was that I replaced the proxy apt.conf file with an empty apt.conf file, which apt then ignored.

Works for current latest Ubuntu as well.

If the proxy conf does not exist, create it:

$ sudo touch /etc/apt/apt.conf.d/95proxy.conf

Then add the following two lines:

Acquire::http::Proxy "false";
Acquire::https::Proxy "false";
kaiser
  • 107
  • 6
Ahatius
  • 2,077
  • 6
  • 24
  • 25
26

If you do not want apt-get to use a proxy, use apt-get as:

sudo apt-get -o Acquire::http::proxy=false <update/install> 
Stephen Rauch
  • 1,156
  • 6
  • 14
  • 20
19

Sometimes, there are proxy environment variables that are still set.

To find out, do the following command:

env | grep proxy

If you see some output, for example:

http_proxy=http://127.0.0.1:1234/

Then you'll need to unset this variable.

To do so, execute the following command:

unset http_proxy

Follow the same approach for all the other entries, such as https_proxy.

Alaa Ali
  • 31,075
  • 11
  • 94
  • 105
  • 1
    Thanks for the hint, unfortunately both the http and the https proxy are empty :\ – Ahatius Sep 13 '13 at 08:45
  • 1
    Hmm. Interesting. Although I doubt it, but maybe the variable is `HTTP_PROXY` (all caps), so try `env | grep -i proxy` `(-i` meaning "case insensitive"), and see if there's any output; it's worth a try =/. Also, can you do `grep -iR proxy /etc/apt/`? This searches for the word proxy in all files under `/etc/apt/`, because the proxy is sometimes set in a file under `/etc/apt/apt.conf.d/`. – Alaa Ali Sep 13 '13 at 09:24
  • It also doesn't have to do with proxy being all caps. Executing the grep command also didn't reveal any other file that contains a proxy configuration. – Ahatius Sep 13 '13 at 18:01
  • Ok, I think I got it. I'm using a script to switch all configuration files for proxies. The problem was that I replaced the apt.conf with an empty file. Apt then obviously always loaded the last proxy configuration, because the proxy value was not set to false. Thanks anyway for your efforts! – Ahatius Sep 13 '13 at 18:09
  • Maype the proxy env has setting in `/etc/environment` , so we can looking for here. – Chu-Siang Lai Nov 03 '14 at 03:59
7

There isn't only one place where apt-get read configuration files. You should run grep -i proxy /etc/apt/apt.conf.d/* and it will give you the exact file that has the proxy settings (this is just an example running with update instead proxy:

grep -i update /etc/apt/apt.conf.d/*
/etc/apt/apt.conf.d/20apt-show-versions:// When Apt's cache is updated (i.e. apt-cache update)
/etc/apt/apt.conf.d/20packagekit:// Whenever dpkg is called we might have different updates
/etc/apt/apt.conf.d/20packagekit:// i.e. if an user removes a package that had an update
/etc/apt/apt.conf.d/20packagekit:"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 1 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
/etc/apt/apt.conf.d/20packagekit:// When Apt's cache is updated (i.e. apt-cache update)
/etc/apt/apt.conf.d/20packagekit:"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 1 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
Braiam
  • 66,947
  • 30
  • 177
  • 264
  • 3
    This is not enough, the file `/etc/apt/apt.conf` also can contain Proxy information. Also it may be written with capital letter. – kap Oct 11 '19 at 13:47
2

It's possible the environment variable http_proxy is set to some proxy. try clearing the variable (or at least look if it has a value)

Aviran
  • 1,151
  • 2
  • 7
  • 9
2

Stupid way of making it work is disable the proxy for a while using system settings > Network .

Or remove the proxy config from /etc/environment and /etc/apt/apt.conf

enter image description here

And add the manual proxy config back once you need proxy back.

prayagupa
  • 387
  • 2
  • 4
  • 16
1

For me, no proxy variables were set in the environment, and no proxy was set at the system level. However, a file 01proxy was present in /etc/apt/apt.conf.d/ which contained the line Acquire::http::Proxy "http://PROXY:PORT";. Commenting the line with # (or deleting the file) worked for me. This means that other files in apt.conf and apt.conf.d may contain proxy settings and I'd suggest greping proxy (with -i flag) information from those two folders to know if the apt service uses one.

Note that @Prashant Adlinge answer always works in that case as it bypasses any configuration file.

Flewer47
  • 121
  • 4
0

you should bypass all proxy settings:

sudo apt-get -o Acquire::http::proxy=false -o Acquire::https::proxy=false -o Acquire::ftp::Proxy=false update
sudo apt-get -o Acquire::http::proxy=false -o Acquire::https::proxy=false -o Acquire::ftp::Proxy=false install xxx