«invalid or corrupted package (PGP signature)»
Кожен пакунок, який постачає Ditana, підписано, і pacman відмовляється встановлювати пакунок, підпис якого не може перевірити. Так і має працювати цей механізм. Але це також означає, що застаріла в’язка ключів не дає вам встановити саме ті оновлення, які б її виправили.
Ви побачите одне з таких повідомлень — залежно від того, чи ключ підпису відсутній у вашій в’язці ключів, чи присутній, але не довірений:
error: ditana-mirrorlist: key "3EC223A811077C09" is unknown:: Import PGP key 3EC223A811077C09? [Y/n]error: 'ditana-mirrorlist-1.12-1-any.pkg.tar.zst': invalid or corrupted package (PGP signature)error: ditana-mirrorlist: signature from "Stefan Zipproth <[email protected]>" is unknown trusterror: failed to commit transaction (invalid or corrupted package (PGP signature))Виправлення
Розділ «Виправлення»Для пакунка Ditana:
sudo pacman -Sy ditana-keyringДля пакунка Arch (та сама проблема, той самий вигляд — це часто трапляється в системах, які місяцями не під’єднувалися до мережі):
sudo pacman -Sy archlinux-keyringЦе виняток із правила «ніколи не виконуйте -Sy для окремого пакунка» зі сторінки Оновлювати систему обов’язково, і варто зрозуміти, чому це безпечно, а не сприймати це як магічне заклинання. У транзакції бере участь лише один пакунок, тож часткового оновлення графа залежностей не відбувається. Цей пакунок невеликий і не містить виконуваних файлів. А його підпис можна перевірити ключем, який уже є у вашій встановленій системі, тож ви не довіряєте нічому, чому не довіряли раніше, — встановлення цього пакунка виконує pacman-key --populate, що додає поточний набір ключів Ditana до вашої в’язки ключів. Після цього, як зазвичай, виконайте повне оновлення.
Якщо ви віддаєте перевагу ручному способу, ось саме те, що виконує сценарій встановлення цього пакунка:
sudo pacman-key --populate ditanaСамостійна перевірка ключів
Розділ «Самостійна перевірка ключів»Пакунки Ditana підписано цим ключем:
pub rsa4096 3F80 54C3 FF75 5E55 44E6 8516 BC33 3E9A E877 D45Auid Stefan Zipproth <[email protected]>uid Stefan Zipproth <[email protected]>Він містить окремий підключ підпису, і саме цей підключ підписує базу даних сховища та кожен пакунок, зібраний з серпня 2026 року:
sub rsa4096 068E EA2A 490B 0C63 AEAA 3BCD 3EC2 23A8 1107 7C09Відбиток, за яким ви перевіряєте, залишається тим, що наведено вище: підключ можна замінити, і відбиток від цього не зміниться. В’язка ключів, старіша за ditana-keyring 20260809, узагалі не знає цього підключа — саме таку ситуацію й усуває наведене вище виправлення.
Перевірте, чому довіряє ваша власна система, за допомогою таких команд:
pacman-key --list-sigs ditanagpg --show-keys --with-subkey-fingerprint /usr/share/pacman/keyrings/ditana.gpgМи свідомо не пропонуємо тут сценарій виправлення, який треба завантажити й запустити. Ваша ситуація — «у мене не працює перевірка підписів»; відповідати на це «завантажте ось це й виконайте від імені root» — формально та сама операція, для запобігання якій і існують підписи, та й підписати такий сценарій так, щоб це мало сенс, теж не вийшло б — зламана саме перевірка підпису. Одна команда, яку ви можете прочитати, краща за чорну скриньку.
Інші причини того самого повідомлення
Розділ «Інші причини того самого повідомлення»- Неправильний годинник. Підпис недійсний до моменту свого створення. Якщо системний годинник показує час далеко в минулому — розряджена батарейка CMOS, щойно створена віртуальна машина, подвійне завантаження з Windows, яка записує місцевий час у RTC, — кожен підпис виглядає так, ніби він із майбутнього. Перевірте це за допомогою
timedatectlі ввімкніть NTP командоюsudo timedatectl set-ntp true. - Дзеркало віддало обрізаний файл. У такому разі повідомлення згадує контрольну суму, а не підпис PGP.
sudo pacman -Sccочищає кеш завантажень, і під час наступного оновлення файл буде завантажено знову.
Це машинний переклад. Читачі вдосконалюють його на Weblate.