Перейти до вмісту

«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 trust
error: 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 D45A
uid 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 ditana
gpg --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.