После одного из моих недавних обновлений я заметил, что мои сторонние репозитории не обновляются из-за ошибки NO_PUBKEY
от apt. Я часами искал исправление, но все исправления предполагают использование ключа apt. Однако это больше не работает, потому что оно устарело. Поэтому я вручную скопировал ключи одного репо из / usr / share / keyrings
в /etc/apt/trusted.gpg.d
в качестве теста, и, похоже, это сработало. Теперь все работает для этого приложения.
У меня вопрос: есть ли новая функция для загрузки ключей с сервера вместо функции apt-key
? Большинство сайтов не осознали это изменение и предлагают команду apt-key
для своих ключей репо, которая теперь просто возвращает ошибки. И как обновить мои текущие ключи стороннего репо, если только у них есть проблема? Следует ли мне вручную скопировать
ключи, как я упоминал выше, или есть более эффективное решение?
РЕДАКТИРОВАТЬ: Я нахожусь на 20.10. Apt-key работает до 20.04, но не после этого.
$ sudo apt update
Err:9 http://repo.vivaldi.com/stable/deb stable Release.gpg
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://repo.vivaldi.com/stable/deb stable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6
W: Failed to fetch http://repo.vivaldi.com/stable/deb/dists/stable/Release.gpg The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6
W: Some index files failed to download. They have been ignored, or old ones used instead.
apt-key
никогда не загружал ключи сам по себе. apt-key adv
передал параметры в gpg
, а gpg
выполнил фактическую загрузку (apt-key
— это сложный сценарий оболочки, который сам создает временные сценарии для запуска gpg
). Вы по-прежнему можете использовать gpg
для импорта ключей, например. вместо apt-key adv --recv-keys
вы должны сделать что-то вроде:
sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/foo.gpg --recv-keys 9658E8044A3AA3D6
Или вместо wget ... | apt-key add -
:
wget -qO - https://example.com/somekey.gpg |
sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/example.gpg --import -
Примечания:
--homedir
с какой-либо другой частью, если хотите этого избежать. apt
, но использование префикса gnupg-ring:
заставляет использовать старый формат для некоторая причина. Если в вашем программном обеспечении уже были установлены наборы ключей в /usr/share/keyrings
, то, предположительно, в их записях sources.list
должно быть что-то вроде [signed-by= /usr/share/keyrings/foo.gpg]
(см. Вики Debian).