When I do upgrade it gets stuck here:

user@plato:~# sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  bind9-host coreutils cpio curl dnsutils libbind9-90 libc-bin libc-dev-bin
  libc6 libc6-dev libcgmanager0 libcurl3 libcurl3-gnutls libdns100
  libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libisc95 libisccc90
  libisccfg90 libjasper1 liblwres90 libplymouth2 libsepol1 libssl-dev
  libssl-doc libssl1.0.0 linux-libc-dev mime-support multiarch-support ntp
  ntpdate openssl plymouth plymouth-theme-ubuntu-text python3-distupgrade
  ubuntu-release-upgrader-core unzip
39 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.0 MB of archives.
After this operation, 12.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
0% [Connecting to us.archive.ubuntu.com (2001:67c:1562::15)] ░

When I do update it gets stuck here:

user@plato:~# apt-get update
0% [Connecting to us.archive.ubuntu.com (2001:67c:1562::14)] [Connecting to sec░

I'm able to ping us.archive.ubuntu.com just fine:

user@plato:~# ping us.archive.ubuntu.com
PING us.archive.ubuntu.com (91.189.91.23) 56(84) bytes of data.
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=1 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=2 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=3 ttl=54 time=81.5 ms
64 bytes from economy.canonical.com (91.189.91.23): icmp_seq=4 ttl=54 time=81.4 ms
^C
--- us.archive.ubuntu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 81.425/81.528/81.582/0.355 ms

What can i do to fix this?


What I have tried so far.

I've tried following directions on this blog: http://nickescobedo.com/719/ubuntu-apt-get-hangs-at-0

To force apt-get to use IPv4 exclusively

  • Create a file in /etc/apt/apt.conf.d/99force-ipv4
  • Add this line to newly created file Acquire::ForceIPv4 false;
  • Apt-get will now use IPv4 exclusively
  • None of the answers worked for me: my problem was my Windows host firewall blocking my Ubuntu guest running in Virtualbox. – drodsou Jan 2 at 20:10
  • None of these answers worked for me. I restarted my virtual machine and it works now. – kilojoules Apr 25 at 18:33
up vote 273 down vote accepted

I figured out how to get apt-get to work again.

Edit gai.conf:

sudo vim /etc/gai.conf

change line ~54 to uncomment the following:

precedence ::ffff:0:0/96  100

write and quit:

:wq

CAUTION

Look out line 50 which looks almost identical:

precedence ::ffff:0:0/96  10

This is the wrong line. Go ~4 lines down and you'll find the correct line to uncomment because it ends with 100 instead of 10

  • 1
    Thank you for posting your solution. I was having the same issue and this fixed it. – bradym Jan 21 '15 at 7:00
  • 51
    How on Earth did you figure this out? This suddenly started happening to me on one of my servers and this fixed it. – Brian Neal Jan 25 '15 at 21:11
  • 3
    What is going on here? Care to elaborate why this fix works? – four43 Jun 16 '15 at 20:35
  • 48
    Problem: ISPs are starting to setup an internal IPv6 network in preparation for eventually connecting to the IPv6 internet. As a result, servers in this network now try to connect to *.ubuntu.com via its IPv6 address by default when running apt-get. Solution: uncommenting precedence ::ffff:0:0/96 100 allows requests to prefer IPv4 – Arian Faurtosh Jun 16 '15 at 22:19
  • 8
    FIXED! This is definitely the right fix for this issue. But for anyone that comes across this fix make sure you DO NOT do what I did. I uncommented precedence ::ffff:0:0/96 10 and I had to go back in to the file and comment that line again and then uncomment the correct line which is precedence ::ffff:0:0/96 100 – dtigue Aug 6 '15 at 17:46

It's better to disable the IPV6 before you update and upgrade.

  1. Open Terminal

  2. Enter sudo -H gedit /etc/sysctl.conf and open the configuration file and add the following lines at the end

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  3. After that run

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6 
    

    If it reports ‘1′ means you have disabled IPV6.

    If it reports ‘0‘ then please follow Step 4 and Step 5.

  4. Type command sudo sysctl -p. You will see this in terminal.

    net.ipv6.conf.all.disable_ipv6 = 1 
    net.ipv6.conf.default.disable_ipv6 = 1 
    net.ipv6.conf.lo.disable_ipv6 = 1 
    
  5. Repeat above “Step 3” and it will now report 1.

None of the IPv6 fixes worked for me. Possibly I have the same symptom with a different cause. My workaround was to switch to a different archive by doing a search and replace in sources.list, e.g.:

sudo vim /etc/apt/sources.list

And then:

:%s/us\.archive/de\.archive/g
:wq

This at least allows me to get back to work until I figure out the real problem.

What worked for me was to switch my VirtualBox Network settings for my Ubuntu guest to "NAT" from "Bridged Adapter".

  • Yes, this is bound to work. But, why doesn't it work over 'Bridged Adapter'. I am able to do everything with 'Bridged Adapter' except apt-get update. – soufrk Mar 13 at 11:47

protected by Community Jun 6 '15 at 12:36

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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