apt update зависает, нет способа устранить неполадки

apt update зависает, нет способа устранить неполадки

Обновление Apt в Ubuntu 16.04 зависает случайным образом при каждом обновлении представления.

Ничто из того, что я пробовал, не может исправить эту проблему навсегда, и у меня нет способа устранить неполадки.

Единственное решение, которое у меня есть, — это создать скрипт оболочки для 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

Что я сделал:

Переключиться на Google DNS

Отключить управляемый DNS NetworkManager

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

Перезапустить NetworkManager

systemctl restart NetworkManager.service

редактировать apt-config

В некоторых репозиториях возникают проблемы с конвейеризацией 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

Эти 2 команды на самом деле проблемные, потому что они, кажется, пытаются украсть блокировку или что-то в этом роде. В конце концов я их удалил.

Как можно навсегда решить эту проблему, не прибегая к таким уловкам, как скрипт оболочки, который делает apt clean && apt update?

Как мне решить эту проблему?

Связанный контент