Ubuntu APT Update 卡住的排查与解决方案
背景
最近在使用 Ubuntu 进行 sudo apt-get update
时,发现更新一直卡在 Connecting to 172.23.153.121
,并最终超时。起初以为是网络问题,但 ping archive.ubuntu.com
和 ping security.ubuntu.com
都能返回数据,说明基础网络是通的。
深入排查后,发现 APT
可能被配置了错误的代理或镜像源,导致更新请求被错误地重定向到 172.23.153.121
,最终导致超时。以下是详细的排查过程和解决方案。
排查过程
1. 检查 APT 源是否正确
首先查看 /etc/apt/sources.list
,确认是否存在错误的源配置:
1 | cat /etc/apt/sources.list |
我的 sources.list
内容如下:
1 | deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse |
看起来没有问题,说明问题不是由于源地址错误引起的。
2. 检查 APT 代理设置
APT 可能被配置了一个错误的代理,导致所有请求都被重定向。检查 apt.conf.d
目录:
1 | grep -r "172.23.153.121" /etc/apt/apt.conf.d/ |
果然,发现了类似的代理配置:
1 | /etc/apt/apt.conf.d/00proxy:Acquire::http::Proxy "http://172.23.153.121:80/"; |
解决方案:删除或修改该文件
1 | sudo rm /etc/apt/apt.conf.d/00proxy |
或者手动编辑:
1 | sudo nano /etc/apt/apt.conf.d/00proxy |
删除 Acquire::http::Proxy
相关的行,保存退出。
3. 检查环境变量中的代理
如果 apt.conf.d
没有问题,可能是系统环境变量导致的。执行:
1 | env | grep -i proxy |
如果返回:
1 | http_proxy=http://172.23.153.121:80 |
那么需要取消代理:
1 | unset http_proxy |
并检查 bash
配置文件:
1 | grep -i proxy ~/.bashrc ~/.bash_profile ~/.profile /etc/environment /etc/bash.bashrc /etc/profile |
如果发现 export http_proxy
或 export https_proxy
,需要手动编辑相应文件删除,并执行:
1 | source /etc/environment |
4. 清除 APT 缓存并重试
清除旧的 APT 数据,防止缓存影响:
1 | sudo rm -rf /var/lib/apt/lists/* |
5. 检查 DNS 设置
如果问题依然存在,可能是 DNS 解析问题。查看 DNS 配置:
1 | cat /etc/resolv.conf |
如果 DNS 服务器不是 8.8.8.8
或 8.8.4.4
,可以手动修改:
1 | sudo nano /etc/resolv.conf |
添加:
1 | nameserver 8.8.8.8 |
然后再次运行:
1 | sudo apt-get update |
6. 强制 APT 使用 IPv4
如果仍然超时,尝试强制 APT 仅使用 IPv4:
1 | sudo apt-get update -o Acquire::ForceIPv4=true |
7. 更换国内镜像源(可选)
如果你在国内,使用官方的 archive.ubuntu.com
可能会较慢,可以更换为阿里云或清华源。
编辑 /etc/apt/sources.list
:
1 | sudo nano /etc/apt/sources.list |
替换为:
1 | deb http://mirrors.aliyun.com/ubuntu focal main restricted universe multiverse |
然后更新:
1 | sudo apt-get update |
总结
- 检查 APT 代理配置 (
/etc/apt/apt.conf.d/
),删除错误的代理设置。 - 检查系统环境变量 (
env | grep -i proxy
),删除不必要的代理。 - 清理 APT 缓存 (
sudo rm -rf /var/lib/apt/lists/* && sudo apt-get clean
)。 - 修复 DNS 设置 (
sudo nano /etc/resolv.conf
,改成8.8.8.8
)。 - 强制使用 IPv4 (
sudo apt-get update -o Acquire::ForceIPv4=true
)。 - 更换国内镜像源(阿里云、清华等)。