apt update 一直挂起,无法排除故障

apt update 一直挂起,无法排除故障

Ubuntu 16.04 上的 apt 更新在每次视图更新时都会随机挂起。

我尝试过的任何方法都无法永久修复它,而且我也无法对其进行故障排除。

我唯一的解决方案是创建一个 shell 脚本来apt clean && apt update.然后就可以了。

echo -e '#!/bin/bash\nsudo apt clean && sudo apt update' | sudo tee /usr/bin/apt-update; sudo chmod +x /usr/bin/apt-update

我做过的事情:

切换到谷歌DNS

禁用 NetworkManager 管理的 DNS

sudo sed -i -e 's/^dns=dnsmasq/#dns=dnsmasq/' /etc/NetworkManager/NetworkManager.conf

将 Google DNS 添加到 DHCP 客户端(dhcp 会将 google DNS 添加到 /etc/resolv.conf)

echo 'prepend domain-name-servers 8.8.4.4;' | sudo tee -a /etc/dhcp/dhclient.conf

echo 'prepend domain-name-servers 8.8.8.8;' | sudo tee -a /etc/dhcp/dhclient.conf

重新启动网络管理器

systemctl restart NetworkManager.service

编辑 apt 配置

一些存储库存在 http/1.1 管道问题。

请尝试以下操作:

echo 'Acquire::http::Pipeline-Depth "0";' | sudo tee /etc/apt/apt.conf.d/99pipelining-off


有时很难看出哪些存储库因超时而失败

减少超时

echo 'Acquire::http::Timeout "5";' | sudo tee /etc/apt/apt.conf.d/99reduce-timeout


强制 IP V4 禁止尝试解析 IP V6

echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4

为 apt-update 创建脚本

apt-get 更新经常挂起/失败。解决这个问题的方法是总是 apt cleanapt update

此命令创建一个名为 的脚本,apt-update该脚本就是执行此操作的,应该使用apt-get update或代替apt update

echo -e '#!/bin/bash\nsudo apt clean && sudo apt update' | sudo tee /usr/bin/apt-update; sudo chmod +x /usr/bin/apt-update

启用自动镜像切换

sudo sed -i -e 's/deb http:\/\/il.archive.ubuntu.com\/ubuntu\//deb mirror:\/\/mirrors.ubuntu.com\/mirrors.txt/' sources.list

启用合作伙伴存储库

sudo sed -i.bak "/^# deb .*partner/ s/^# //" /etc/apt/sources.list


我尝试编辑清洁政策

echo 'DSELECT::Clean "always";' | sudo tee /etc/apt/apt.conf.d/99DselectAlwaysClean

echo 'APT::Get::Clean=always;' | sudo tee /etc/apt/apt.conf.d/99AlwaysClean

我什至尝试添加更新后和更新前命令

echo 'APT::Update::Post-Invoke {"/usr/bin/apt apt clean || exit 0"};' | sudo tee /etc/apt/apt.conf.d/99PostUpdateClean

echo 'APT::Update::Pre-Invoke {"/usr/bin/apt clean || exit 0"};' | sudo tee /etc/apt/apt.conf.d/99PreUpdateClean

这两个命令实际上是有问题的,因为它们似乎试图窃取锁或其他东西。最后我把它们删除了。

我怎样才能永久解决这个问题,而不需要像 shell 脚本那样采用黑客手段apt clean && apt update

我该如何解决这个问题?

相关内容