Рано или поздно apt update на вашем VPS Linux Infrawire завершится стеной красного текста: нет GPG-ключа, репозиторий больше не существует или блокировка никак не снимается. У каждой ошибки есть понятная причина и короткое решение.
В руководстве разобраны самые частые проблемы в Ubuntu 24.04 и Debian 12, от наименее до наиболее вмешивающихся исправлений.
📋 Требования
- VPS с Ubuntu 24.04 или Debian 12
- Доступ по SSH под root (IP и пароль root есть в вашем личном кабинете)
- Базовые навыки работы с командной строкой
1. Сначала найдите источники
Прежде чем что-то чинить, выясните, где заданы ваши репозитории:
Bashcat /etc/os-release cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/ apt update 2>&1 | grep -E '^(Err|W:|E:)'
В Ubuntu 24.04 основные репозитории описаны в /etc/apt/sources.list.d/ubuntu.sources в формате deb822 (файлы .sources). Debian 12 по-прежнему использует классический однострочный формат в /etc/apt/sources.list, и оба формата работают вместе.
Bash# Пример записи deb822 (Ubuntu 24.04) Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
2. Ошибки блокировки и прерванный dpkg
Сообщение Could not get lock /var/lib/dpkg/lock-frontend означает, что apt использует другой процесс, чаще всего unattended-upgrades сразу после загрузки. Проверьте, прежде чем действовать:
Bashps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend
Если процесс работает, подождите несколько минут. Удаляйте файл блокировки, только если его никто не держит (рискованно, если вы ошибётесь), а затем исправьте прерванное состояние:
Bashrm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock dpkg --configure -a apt --fix-broken install
Сообщение dpkg was interrupted, you must manually run 'dpkg --configure -a' решается именно первой из этих команд.
3. NO_PUBKEY и отсутствующие GPG-ключи
Ошибка The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABCD1234 означает, что у стороннего репозитория нет доверенного ключа. Не используйте устаревший apt-key: сохраните ключ в /etc/apt/keyrings/ и сошлитесь на него через signed-by.
Bashinstall -d -m 0755 /etc/apt/keyrings curl -fsSL https://example.com/repo/key.gpg | gpg --dearmor -o /etc/apt/keyrings/example.gpg chmod 644 /etc/apt/keyrings/example.gpg echo 'deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main' > /etc/apt/sources.list.d/example.list apt update
Используйте URL ключа из официальной документации программы и при необходимости сначала установите curl gnupg. Если ошибка относится к самому архиву Ubuntu или Debian, переустановите пакет с ключами: apt install --reinstall ubuntu-keyring или debian-archive-keyring.
4. Сломанные сторонние репозитории
Ошибка 404 Not Found или does not have a Release file у PPA либо репозитория вендора обычно означает, что он больше не поддерживает вашу версию. Отключите его, а не удаляйте:
Bash# Классический файл .list: переименуйте его mv /etc/apt/sources.list.d/broken.list /etc/apt/sources.list.d/broken.list.disabled # Файл .sources в deb822: добавьте эту строку внутрь блока Enabled: no
Затем снова выполните apt update. Ошибка исчезнет, а уже установленные пакеты продолжат работать.
5. Ошибки часов: Release file not valid yet
Release file for ... is not valid yet (invalid for another 3h 12min) означает, что системные часы отстают от метки времени репозитория. Проверьте и пересинхронизируйте:
Bashtimedatectl timedatectl set-ntp true systemctl restart systemd-timesyncd
Если systemd-timesyncd не установлен (в некоторых минимальных образах Debian), используйте apt install -y chrony.
6. Версии с завершённой поддержкой (EOL)
Когда поддержка версии заканчивается, её пакеты переносят, и apt update возвращает 404 или no longer has a Release file. Для не-LTS версии Ubuntu направьте источники на архив старых релизов:
Bashsed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g; s|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources 2>/dev/null apt update
Для старого Debian используйте http://archive.debian.org/debian и удалите строку security. Считайте EOL-систему временной мерой: она больше не получает исправлений безопасности, поэтому запланируйте переход на поддерживаемую версию.
7. Проверка
Bashapt update apt upgrade --dry-run apt-get check
apt update должен завершиться без строк Err и E:, а apt-get check ничего не должен выводить.
🛠️ Устранение неполадок
Блокировка возвращается при каждой попытке: вероятно, работает unattended-upgrades. Проверьте systemctl status unattended-upgrades и дождитесь завершения.
Conflicting values set for option Signed-By: один и тот же репозиторий объявлен дважды с разными ключами. Найдите его через grep -r example.com /etc/apt/ и оставьте одну запись.
apt --fix-broken install падает на скрипте пакета: прочитайте последние строки ошибки, затем попробуйте dpkg --remove --force-remove-reinstreq PACKAGE и обычную переустановку.
✅ Ваш менеджер пакетов снова в порядке: обновления и установки проходят без ошибок!