Сразу к делу: ошибка signature from "Unknown User" is unknown trust при установке пакета значит, что pacman не доверяет ключу, которым подписан пакет. Лечится по порядку: сначала обнови пакет archlinux-keyring через pacman -Syu, затем выполни pacman-key --refresh-keys, а если связка ключей повреждена, сбрось её через pacman-key --init и pacman-key --populate archlinux. В большинстве случаев хватает первого шага.
Arch подписывает каждый пакет. У проекта есть мастер-ключ и ключи разработчиков, заверенные этим мастер-ключом. Ключи лежат в связке /etc/pacman.d/gnupg. При установке pacman проверяет подпись пакета: если ключ подписанта есть в связке и ему доверяют, пакет ставится. Если ключа нет или цепочка доверия от мастер-ключа разорвана, появляется ошибка.
Это защита от подмены. Без проверки подписей тот, кто контролирует зеркало или перехватил трафик, мог бы подсунуть свой пакет с вредоносным кодом. Поэтому pacman по умолчанию отказывается ставить пакеты с неизвестной подписью.
Схема доверия простая. Мастер-ключ Arch подписывает ключи разработчиков. В твою связку при установке системы попадает мастер-ключ и все ключи разработчиков из пакета archlinux-keyring. Мастер-ключ помечен как полностью доверенный. Дальше pacman проверяет подпись пакета и идёт по цепочке: подпись разработчика, затем подпись мастер-ключа. Если любое звено отсутствует или повреждено, доверие не подтверждается, и установка блокируется.
Проверка происходит до распаковки. pacman смотрит подпись, сверяет её с ключами в связке и только потом начинает установку. Если подпись не подтвердилась, транзакция отменяется целиком, а не только для одного пакета. Поэтому одна сломанная подпись останавливает обновление всей системы.
Типичный вывод pacman выглядит так:
error: linux: signature from "Unknown User <noreply@archlinux.org>" is unknown trust
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Причин две. Первая: ключ разработчика, подписавшего пакет, ещё не попал в твою связку. Вторая: связка устарела или повреждена, и цепочка доверия разорвана. В обоих случаях pacman не может подтвердить подлинность пакета и блокирует установку.
Похожие сообщения: key is revoked, key is expired, no public key. Каждое из них описывает своё состояние ключа, но лечение одинаковое: обновить keyring и подтянуть свежие ключи.
Разница между «unknown key» и «unknown trust» небольшая. В первом случае ключа вообще нет в связке. Во втором ключ есть, но ему не доверяют: он не подписан мастер-ключом или подпись повреждена. Обе ситуации лечатся одинаково, но для диагностики полезно понимать, с какой из них ты столкнулся.
Посмотри, что лежит в связке:
pacman-key --list-keys
pacman-key --list-sigs | head
Первая команда показывает все ключи, вторая: подписи и цепочку доверия. Ищи в выводе адрес из сообщения об ошибке, например noreply@archlinux.org. Если такого ключа нет, значит, он ещё не скачан. Если есть, но без подписи мастер-ключа, цепочка доверия разорвана, и нужен --refresh-keys.
Обрати внимание на пометки доверия рядом с ключами. У мастер-ключа стоит [ full ] или [ ultimate ]. У ключей разработчиков, подписанных мастер-ключом, тоже собирается полное доверие. Если рядом с ключом написано [ unknown ], цепочка не собрана, и pacman откажется принимать подпись.
Самый частый случай: устаревший пакет archlinux-keyring. В нём лежат свежие ключи разработчиков и списки отозванных ключей. Если пакет подписан новым ключом, а твой keyring старый, pacman его не знает.
Обнови систему целиком:
pacman -Syu
Полное обновление предпочтительнее: вместе с keyring обновятся и остальные пакеты, а система останется консистентной. Во время pacman -Syu keyring обновляется одним из первых. Это сделано специально: свежие ключи нужны, чтобы проверить подписи остальных пакетов. Поэтому полное обновление часто чинит ошибку само, без ручных команд.
Если полное обновление сейчас не подходит, обнови только keyring:
pacman -Sy archlinux-keyring
После этого повтори установку проблемного пакета. Чаще всего ошибка уходит. Важно: pacman -Sy без полного обновления это частичное обновление, а оно в Arch не поддерживается. Подробнее в статье «Частичное обновление pacman». Поэтому после -Sy archlinux-keyring сразу выполняй pacman -Syu.
Если обновление keyring не помогло, подтяни ключи с сервера ключей:
pacman-key --refresh-keys
Команда скачивает свежие версии ключей из связки. Нужен интернет. Иногда она падает с ошибками DNS или TLS, тогда проверь сеть и время системы (об этом ниже).
Старый сервер keyserver.gnupg.net больше не работает. Современные варианты: hkps://keyserver.ubuntu.com и hkps://keys.openpgp.org. Если --refresh-keys ругается на сервер, укажи его явно:
pacman-key --refresh-keys --keyserver hkps://keyserver.ubuntu.com
Сначала проверь сеть. --refresh-keys ходит по HTTPS, поэтому работают те же требования, что и для обычного интернета: доступ к серверу, корректное время, рабочий DNS. Если DNS не отвечает, команда падает с ошибкой разрешения имени. Если время системы ушло, TLS-соединение не установится.
Попробуй другой сервер ключей:
pacman-key --refresh-keys --keyserver hkps://keys.openpgp.org
Если сеть и время в порядке, а команда всё равно падает, переходи к полному сбросу keyring.
Если связка сломана, например после сбоя питания или ручных правок, --refresh-keys не поможет. Сбрось keyring целиком:
rm -rf /etc/pacman.d/gnupg
pacman-key --init
pacman-key --populate archlinux
--init создаёт новую связку и мастер-ключ. --populate archlinux загружает официальные ключи Arch из пакета archlinux-keyring. После этого обнови ключи с сервера:
pacman-key --refresh-keys
Нюанс: --populate берёт ключи из установленного пакета archlinux-keyring. Если сам пакет повреждён или устарел, сначала переустанови его. Если система не обновляется из-за подписей, возьми свежий keyring с другого компьютера или с установочного ISO: скопируй каталог /etc/pacman.d/gnupg с рабочей машины либо загрузись с live-USB, где keyring свежий, и перенеси его в систему.
Подписи проверяются по времени. Если системные часы ушли вперёд или назад, ключи могут считаться недействительными: срок действия истёк или ещё не наступил. Это же ломает HTTPS-соединения, а вместе с ними и --refresh-keys, и обычные обновления.
Проверь время:
date
timedatectl
Если время неверное, включи синхронизацию:
timedatectl set-ntp true
Аппаратные часы тоже стоит проверить:
hwclock --systohc
На большинстве систем аппаратные часы хранят время в UTC, а локальное время вычисляется по часовому поясу. Если ты менял часовой пояс или система грузилась без сети, часы могут разойтись. timedatectl покажет и локальное время, и UTC, и статус синхронизации.
После исправления времени повтори pacman-key --refresh-keys и установку пакета.
Ошибка «Unknown User» появляется и тогда, когда пакет пришёл не из официальных репозиториев. Если ты добавил сторонний репозиторий, например chaotic-aur, его пакеты подписаны ключом этого репозитория. Пока ключ не импортирован и не помечен как доверенный, pacman будет ругаться.
Решение: импортировать ключ репозитория. Для chaotic-aur:
pacman-key --recv-keys <ID_ключа>
pacman-key --lsign-key <ID_ключа>
ID ключа и точные команды бери с сайта репозитория. Не подписывай случайные ключи: доверяй только тем, что опубликованы на официальных страницах проекта.
Кстати, пакеты из AUR тут ни при чём. AUR-пакеты ты собираешь сам из исходников, подписей там нет. Проблема с чужими ключами возникает только при подключении бинарных репозиториев, которые раздают готовые пакеты.
Обнови archlinux-keyring ещё раз и выполни pacman-key --refresh-keys. После крупных обновлений набор ключей разработчиков меняется, и связка отстаёт на один шаг.
Технически да: pacman -S --config /dev/null <пакет>. Но эта команда отключает проверку подписей для всех пакетов в ней. Не используй её без крайней нужды: теряется защита от подмены пакетов. Это разовая мера, а не решение.
pacman-key это обёртка над GnuPG для связки /etc/pacman.d/gnupg. Она использует те же механизмы, но настроена под нужды pacman: отдельная связка и свои параметры доверия. Обычный gpg работает с личной связкой ~/.gnupg и на pacman не влияет.
Проверь, не добавлен ли у тебя сторонний репозиторий с собственными ключами. Если да, импортируй его ключ заново. Если репозиториев нет, а ошибка возвращается, сбрось keyring целиком и настрой синхронизацию времени.
Переустановка пакета обновит файлы ключей, но не восстановит повреждённую связку /etc/pacman.d/gnupg. Если после переустановки и --refresh-keys ошибка осталась, делай полный сброс: rm -rf /etc/pacman.d/gnupg, затем pacman-key --init и pacman-key --populate archlinux.
Ошибка signature from Unknown User не повод паниковать. Чаще всего помогает обновление archlinux-keyring и pacman-key --refresh-keys. Если связка повреждена, сброс через --init и --populate archlinux вернёт её к жизни. Проверь время системы и помни про сторонние репозитории: их ключи нужно импортировать отдельно. А отключение проверки подписей через --config /dev/null оставь на самый крайний случай.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии