
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 clean
前apt 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
這兩個命令實際上是有問題的,因為它們似乎試圖竊取鎖或其他東西。最後我把它們刪除了。