apt update выдаёт ошибку: что делать в Debian 11/12/13 — Решение

В первую очередь, данное руководство будет полезно для тех, кто столкнулся с ошибкой, когда репозиторий Debian недоступен (deb.debian.org недоступен).
Если вам просто нужно подключить рабочие зеркала (На данный момент актуально для РФ), можете сразу перейти на Шаг 4 — либо, пошагово проверить работу базового подключения, проверить DNS и работает ли HTTPS.

На Debian 11 (bullseye), 12 (bookworm) и 13 (trixie) может возникнуть похожая ошибка:

Failed to fetch http://deb.debian.org... Unable to connect
Could not connect to debian.map.fastlydns.net:80/443
Connection refused


📚 Что делать, если Debian не может обновить репозитории

🔍 Причины ошибки

Даже если интернет есть, apt update может падать по нескольким причинам:

  • Провайдер или сеть блокируют deb.debian.org (особенно через CDN Fastly)
  • Проблемы с DNS или IPv6
  • Сбой в сетевом стеке (особенно в виртуальных машинах)
  • Временная недоступность зеркал

💡 Часто всё работало вчера, а сегодня — нет. Это не ошибка системы, а внешние сетевые ограничения.

В качестве примера. При попытке выполнить apt update — в конце вывода имеются похожие строки (например на Дебиан 13 у меня было так):

Warning: Failed to fetch http://deb.debian.org/debian/dists/trixie/InRelease Unable to connect to deb.debian.org:http:
Warning: Failed to fetch http://deb.debian.org/debian/dists/trixie-updates/InRelease Unable to connect to deb.debian.org:http:
Warning: Some index files failed to download. They have been ignored, or old ones used instead.

Что это означает:

Эти предупреждения означают, что система не смогла скачать списки пакетов с официального репозитория deb.debian.org.
Фраза “Unable to connect” — это прямое указание на проблему с сетевым доступом: сервер не отвечает, соединение блокируется или не устанавливается.
Последняя строка (“Some index files failed to download…”) говорит, что APT проигнорировал эти ошибки и использует старые списки (или вообще ничего не обновил). Из‑за этого apt upgrade может ничего не показать, даже если обновления есть.


Пошаговое решение

Спойлер — когда у меня возникла подобная ошибка мне помог Шаг 4


🔧 Шаг 1: Проверьте базовое подключение

ping -c 4 8.8.8.8
  • ✅ Если пакеты идут — сеть есть.
  • ❌ Если нет — проблема на уровне хоста, ВМ или провайдера.

🌐 Шаг 2: Проверьте DNS

nslookup deb.debian.org
  • ✅ Должен вернуть IP (например, 146.75.118.132)
  • ❌ Если не отвечает — смените DNS:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

🔒 Шаг 3: Проверьте, работает ли HTTPS

curl -I https://deb.debian.org
  • ✅ Если ответ 200 OK — HTTPS работает.
  • ❌ Если Connection refused — попробуйте зеркало.

🔄 Шаг 4: Переключитесь на российское зеркало (например, Яндекс)

Откройте файл:

sudo nano /etc/apt/sources.list

💡 Замените содержимое файла (старые зеркала) на приведённые ниже строки, т.е. на адреса соответствующие вашей версии Дебиан.
(Старые зеркала правильнее (рекомендуется) закоментировать — поставить символ решетки # в начало каждой строки.
Второй вариант: (если знаете что делаете) старые зеркала можно удалить, НО только их! Там могут быть и другие строки, удаление которых, может привести к ненужным последствиям):

🟩 Для Debian 11 (bullseye)

deb https://mirror.yandex.ru/debian bullseye main contrib non-free
deb https://security.debian.org/debian-security bullseye-security main contrib non-free
deb https://mirror.yandex.ru/debian bullseye-updates main contrib non-free

🟦 Для Debian 12 (bookworm)

deb https://mirror.yandex.ru/debian bookworm main contrib non-free
deb https://security.debian.org/debian-security bookworm-security main contrib non-free
deb https://mirror.yandex.ru/debian bookworm-updates main contrib non-free

🟥 Для Debian 13 (trixie)

deb https://mirror.yandex.ru/debian trixie main contrib non-free
deb https://security.debian.org/debian-security trixie-security main contrib non-free
deb https://mirror.yandex.ru/debian trixie-updates main contrib non-free

Дополнительно рекомендуется убедиться, что нет дубликатов: (например для Debian 13), если в /etc/apt/sources.list.d/ уже есть файл с trixie от другого зеркала — его тоже лучше отключить (переименовать или удалить), иначе будет конфликт источников и лишние скачивания одних и тех же индексов.
Как это сделать рассмотрим далее в разделе Дополнительно


💾 Сохраните и обновите:

Сохраняяете и выходите Ctrl + O , Enter, Ctrl + X

Обновляете:

sudo apt update

🌍 Где искать актуальные ссылки на репозитории?

Список официальных зеркал Debian

👉 www.debian.orghttps://www.debian.org/mirror/list

  • Выберите страну → найдите зеркало с https и хорошей скоростью
  • Примеры для России:
    • https://mirror.yandex.ru/debian
    • https://mirror.mipt.ru/debian
    • https://msk.debian.org

3. Проверка доступности зеркал

Используйте:

curl -Is https://mirror.yandex.ru/debian | head -1

— если ответ HTTP/2 200 — зеркало работает.


💡 Профилактика: как избежать проблем в будущем

СоветКак применить
Используйте HTTPS-зеркала по умолчаниюОсобенно в России — mirror.yandex.ru
Не полагайтесь только на deb.debian.orgОн может быть недоступен из-за CDN
Регулярно проверяйте sources.listПосле обновления ОС или переноса ВМ
Создайте резервный sources.listНапример, sources.list.backup:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

🧰 Полезные команды

КомандаНазначение
sudo apt cleanОчистить кэш пакетов
sudo rm -rf /var/lib/apt/lists/*Удалить списки пакетов (если повреждены)
sudo apt updateОбновить списки
sudo apt upgradeУстановить обновления
apt list --upgradableПоказать, что можно обновить

📌 Вывод

🔸 deb.debian.org может неожиданно перестать работать — особенно в РФ.
🔸 Зеркало Яндекса по HTTPS — надёжная замена.
🔸 В случае подобной ошибки проверяйте sources.list — это главной файл обновлений.


Дополнительно (как найти и что делать с дубликатами)

Дубликаты могут мешать — APT при apt update выдаёт предупреждения, а в перспективе это риск конфликтов (особенно если для одного репозитория в разных файлах заданы разные GPG-ключи).
Их нужно найти и аккуратно убрать. Подход одинаковый для Debian 11, 12 и 13 — система работы с репозиториями в них одинаковая.

Шаг 1. Поиск дубликатов

Сначала нужно выявить повторяющиеся записи. Дубликатом считается ситуация, когда точно такая же строка (URL, кодовое имя релиза и компоненты вроде main) встречается в двух разных местах: либо дважды в /etc/apt/sources.list, либо один раз в основном файле, а второй — в каком-то файле из /etc/apt/sources.list.d/

Вот команда, которая поможет найти такие повторы:

grep -r "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/* | sort | uniq -d

Она рекурсивно ищет все строки, начинающиеся с deb, сортирует их и выводит только те, что встречаются более одного раза. 

Что делать с выводом? 
Если команда не вывела ни одной строки — всё в порядке: Дубликатов deb -строк нет.

Если вывод всё таки есть: Каждая строка в результате — это дубликат. Теперь нужно понять, в каких именно файлах он затесался. Можно взять одну из таких строк и поискать её подробнее:

grep -Rin "найденная_строка_без_пробелов" /etc/apt/sources.list /etc/apt/sources.list.d/

Так вы увидите номера файлов и строк — это поможет при редактировании.

Важное предупреждение про форматы. Иногда конфликт возникает не из-за двух одинаковых .list-файлов, а из-за того, что для одного репозитория есть и старый .list, и новый .sources (формат deb822). В таком случае APT видит два описания одного источника с разными параметрами (например, разные пути к GPG-ключу) — это тоже нужно исправлять. При поиске обращайте внимание на такие пары.

Шаг 2. Удаление

Когда вы поняли, где дубликат, откройте соответствующий файл в текстовом редакторе
(например, sudo nano /путь/к/файлу) и удалите лишнюю строку. Либо, если дубликат целиком в отдельном файле в sources.list.d, можно удалить этот файл (но сначала убедитесь, что там нет других, уникальных записей). 

Совет для осторожных: перед окончательным удалением можно временно «отключить» файл, переименовав его (например, в vendor.list.disabled). Затем выполните sudo apt update. Если предупреждение пропало — вы точно нашли виновника, и можно удалять файл окончательно. 

Шаг 3. Проверка

После удаления запустите:

sudo apt update

Если в выводе нет предупреждений о дубликатах — задача выполнена

Несколько советов

Сделайте бэкап. Перед любыми правками скопируйте /etc/apt/sources.list и содержимое /etc/apt/sources.list.d/ в отдельную папку. Это спасёт, если вы случайно удалите что-то важное. 

Не смешивайте релизы. При просмотре файлов заодно проверьте, нет ли в одном списке строк для разных кодовых имён (например, bullseye и bookworm рядом) — это частая причина проблем. 

Приведите к одному формату. Если для какого-то стороннего репозитория есть и .list, и .sources, оставьте только один файл. Часто логичнее сохранить .sources, если вендор уже перешёл на этот формат.

После такой чистки система станет чище, а apt update будет работать стабильнее.