Русский (Russian)

Исправление типичных ошибок APT на VPS с Ubuntu и Debian

2 min
VPS/VDS-хостинг

Рано или поздно apt update на вашем VPS Linux Infrawire завершится стеной красного текста: нет GPG-ключа, репозиторий больше не существует или блокировка никак не снимается. У каждой ошибки есть понятная причина и короткое решение.

В руководстве разобраны самые частые проблемы в Ubuntu 24.04 и Debian 12, от наименее до наиболее вмешивающихся исправлений.

📋 Требования

  • VPS с Ubuntu 24.04 или Debian 12
  • Доступ по SSH под root (IP и пароль root есть в вашем личном кабинете)
  • Базовые навыки работы с командной строкой

1. Сначала найдите источники

Прежде чем что-то чинить, выясните, где заданы ваши репозитории:

Bash
cat /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 сразу после загрузки. Проверьте, прежде чем действовать:

Bash
ps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend

Если процесс работает, подождите несколько минут. Удаляйте файл блокировки, только если его никто не держит (рискованно, если вы ошибётесь), а затем исправьте прерванное состояние:

Bash
rm -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.

Bash
install -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) означает, что системные часы отстают от метки времени репозитория. Проверьте и пересинхронизируйте:

Bash
timedatectl 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 направьте источники на архив старых релизов:

Bash
sed -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. Проверка

Bash
apt 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 и обычную переустановку.


✅ Ваш менеджер пакетов снова в порядке: обновления и установки проходят без ошибок!

Следите за последними предложениями, скидками и специальными акциями.

Смотреть акции

Мы используем файлы cookie

Аналитические cookie улучшают работу сайта. Данные не продаются третьим лицам. Подробнее в политике конфиденциальности.