Когда pacman -Syu
начинает жаловаться на «подпись недействительна» или «непоследовательная база данных», даже опытные пользователи Arch Linux могут ощутить легкий мандраж. Эти ошибки часто возникают после длительного периода без обновлений, смены ключей разработчиков или при первом запуске на свежей установке. Разберемся, как работать с инфраструктурой PGP-ключей Arch и вернуть систему в рабочее состояние.
Почему ключи устаревают
Система подписей в Arch — это два слоя защиты:
- Базовая синхронизация через
archlinux-keyring
, содержащая доверенные ключи разработчиков - Индивидуальные подписи пакетов, проверяемые через механизм
pacman-key
Ключи имеют ограниченный срок действия (обычно 1-2 года). Когда обновление archlinux-keyring
происходит с задержкой, pacman теряет доверие к новым подписям пакетов, созданным более свежими ключами. Это не баг, а осознанный компромисс между безопасностью и удобством.
Типичный сценарий восстановления
Допустим, вы видите:
error: python: signature from "Levente Polyak (anthraxx) <levente@leventepolyak.net>" is unknown trust
:: File /var/cache/pacman/pkg/python-3.11.5-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Шаг 1: Обновление временных меток
Первое, что нужно проверить — синхронизацию времени. Некорректное системное время делает PGP-подписи недействительными:
timedatectl set-ntp true
hwclock --hctosys
date # проверьте вывод
Шаг 2: Принудительное обновление ключевых пакетов
Пропустите проверку подписи для самого archlinux-keyring
:
pacman -Sy archlinux-keyring --needed --disable-download-timeout
pacman -Syu --ignore archlinux-keyring
Флаг --ignore
позволяет обойти цикл зависимостей между ключами и пакетами.
Шаг 3: Перезагрузка trustdb
После обновления ключевого пакета необходимо перестроить базу доверия:
pacman-key --init
pacman-key --populate archlinux
pacman-key --refresh-keys
Особое внимание на вывод команды --refresh-keys
. Если процесс зависает на определенном ключе, это может указывать на проблемы с сервером ключей. Используйте параметр --keyserver hkps://keys.openpgp.org
для явного указания сервера.
Автоматизация профилактики
Чтобы предотвратить проблемы в будущем, добавьте в cron задачу для регулярного обновления:
0 */6 * * * /usr/bin/pacman -Sy archlinux-keyring && /usr/bin/pacman-key --refresh-keys
Если вы используете systemd-таймер:
# /etc/systemd/system/arch-keyring-update.timer
[Unit]
Description=Refresh archlinux-keyring every 6h
[Timer]
OnCalendar=*-*-* 0/6:00:00
Persistent=true
[Install]
WantedBy=timers.target
Глубокое погружение: механизм pacman-key
Структура доверия Arch базируется на нескольких ключевых компонентах:
/etc/pacman.d/gnupg
— хранилище GPG-ключей/usr/share/pacman/keyrings/
— предустановленные мастер-ключиpacman-key --list-sigs
— просмотр текущих доверенных подписей
При ручном добавлении ключа (например, для сторонних репозиториев) используйте:
curl -s https://api.project.com/key.asc | pacman-key --add -
pacman-key --lsign-key KEYID
Важно всегда локально подписывать (--lsign
) импортированные ключи, чтобы избежать атак через SHA1-коллизии.
Когда всё идет не по плану: экстренные меры
Если стандартные методы не помогают:
-
Получите свежий список зеркал через
reflector
:bashreflector --latest 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
-
Используйте аппаратные часы в UTC:
bashtimedatectl set-local-rc-time 0
-
Ручное обновление через HTTP (временно отключите проверку):
bashpacman -Sy --config /etc/pacman.conf.force ...
Где
pacman.conf.force
содержит:textSigLevel = Never
Этот метод годится только для первоначального восстановления, после чего нужно немедленно вернуть стандартные настройки подписей.
Заключение
Сбои в механизме подписей — неотъемлемая часть философии Arch Linux, где пользователь добровольно берет на себя ответственность за поддержание системы в актуальном состоянии. Регулярный pacman -Syu
(рекомендуется не реже раза в неделю) и понимание структуры ключей разработчиков избавляет от 95% проблем.
Для критически важных систем рассмотрите использование LTS-версий ключевых пакетов или развертывание локного зеркала с предварительно проверенными подписями.