At home, IPv6 works perfectly - except when updating Ubuntu, apparently. It gets hung up trying to connect to some mirrors via IPv6.
I don't want to disable IPv6 since it works fine with everything else.
You can tell Ubuntu to try to connect via IPv4 first, then fall back to IPv6 if that fails (instead of the other way around).
Edit this file:
/etc/gai.conf
Uncomment out this line:
precedence ::ffff:0:0/96 100
You'll see it right under the part that says "For sites which prefer IPv4 connections ..."