Вопрос или проблема
Я использую WSL (windows-for-linux) с установленным Ubuntu 20.04.3 LTS.
Когда я запускаю sudo apt-get update
, я получаю следующую ошибку:
Err:7 https://apt.kitware.com/ubuntu bionic InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6AF7F09730B3F0A4
Fetched 11.0 kB in 1s (7552 B/s)
Я попробовал советы, опубликованные в:
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY
но это не работает для меня – gpg жалуется на “no data”:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
Executing: /tmp/apt-key-gpghome.Cz3vHTxU7i/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
gpg: keyserver receive failed: No data
Что я должен сделать, чтобы apt-get update заработал?
ОБНОВЛЕНИЕ:
Как было запрошено, делюсь /etc/apt/source.list
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
deb http://archive.ubuntu.com/ubuntu/ focal multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
deb http://security.ubuntu.com/ubuntu/ focal-security universe
deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
deb https://apt.kitware.com/ubuntu/ bionic main
Я добавил ключ на ключевой сервер Ubuntu (по какой-то причине у них не было ключа для репозитория Kitware apt, который был обновлен в 2022 году)
Запуск этого должен решить вашу проблему:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
Следуйте официальной документации:
-
Сначала выполните следующую команду, чтобы установить все необходимые программы:
sudo apt-get update sudo apt-get install gpg wget
-
Теперь добавьте кольцо ключей GPG:
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
-
Обновите:
sudo apt-get update
В вашем /etc/apt/sources.list.d/kitware.list
это:
deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main
Таким образом, этот репозиторий принуждён к проверке с помощью /usr/share/keyrings/kitware-archive-keyring.gpg
этого публичного ключа.
Но вы обновили свой публичный ключ с помощью глобального хранилища ключей apt-key
(которое находится в /etc/apt/trusted.gpg
и /etc/apt/trusted.gpg.d/
), а не этот конкретный файл.
Таким образом, есть два способа заставить это работать:
- Следуйте точным инструкциям в разделе “Получение экземпляра нашего подписывающего ключа” на https://apt.kitware.com/, чтобы создать файл
/usr/share/keyrings/kitware-archive-keyring.gpg
. - Удалите
[signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg]
из/etc/apt/sources.list.d/kitware.list
, чтобы apt мог читать соответствующий публичный ключ из глобального хранилища ключей. (Вам все равно понадобится установить публичный ключ откуда-то)
Мне удалось решить эту проблему без дополнительных предупреждений, следуя инструкциям по настройке для (в моем случае) выпуска ubuntu jammy (запуск от имени суперпользователя):
test -f /usr/share/doc/kitware-archive-keyring/copyright || wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null \
&& apt-get update
Ответ или решение
Возникновение ошибки "NO_PUBKEY" при использовании команды apt-get update
говорит о том, что отсутствует необходимый публичный ключ для валидации пакетов из подключенного репозитория. В данном случае ошибка связана с отсутствием ключа для репозитория Kitware, используемого в системе Ubuntu, работающей на WSL (Windows Subsystem for Linux). Рассмотрим теоретическую часть и практическое решение этой проблемы.
Теория
В системе управления пакетами APT (Advanced Package Tool) каждый подключаемый репозиторий подписывается цифровым ключом, который гарантирует подлинность и целостность пакетов. Публичные ключи хранятся в системе и используются при обновлении списка пакетов (команды apt-get update
) для проверки подписи. Если публичный ключ не найден, APT сообщает о проблеме с верификацией, что и вызвало возникновение ошибки "NO_PUBKEY".
Основной причиной проблемы является то, что в системе отсутствует соответствующий публичный ключ, который необходимо добавить вручную.
Пример
Вы столкнулись с ошибкой "NO_PUBKEY 6AF7F09730B3F0A4", что свидетельствует о необходимости получить данный ключ для корректной работы с репозиторием Kitware. Пытались использовать команду apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
, но это не помогло из-за сообщения об ошибке "gpg: keyserver receive failed: No data".
Применение
Чтобы решить эту проблему, вам необходимо добавить соответствующий ключ следующим образом:
-
Установите необходимые утилиты:
sudo apt-get update sudo apt-get install gpg wget
Установка
gpg
(GNU Privacy Guard) иwget
поможет вам загрузить и обработать ключи. -
Добавьте GPG-ключ репозитория Kitware:
Выполните следующую команду для загрузки и добавления ключа в систему:wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
Эта команда загружает последнюю версию ключа из официального сайта Kitware и добавляет его в указанное местоположение.
-
Проверьте источники и исправьте при необходимости:
В файле/etc/apt/sources.list.d/kitware.list
должна содержаться строка следующего вида:deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main
Это позволяет системе проверить подлинность пакетов через ключ, добавленный на предыдущем шаге.
-
Обновите списки пакетов:
Завершающим шагом будет обновление информации о пакетах:sudo apt-get update
Если все шаги выполнены верно, ошибка "NO_PUBKEY" должна исчезнуть.
Заключение
Ваша система требует наличия корректно настроенной инфраструктуры ключей для доступа к репозиториям. В будущем для предотвращения подобных ситуаций регулярно проверяйте изменения в поддержке репозиториев и своевременно обновляйте ключи. Это позволит поддерживать вашу систему в актуальном и безопасном состоянии, обеспечивая доступ к последним версиям необходимого ПО.
Эти рекомендации и инструкции помогут вам быстро устранить возникающие вопросы, связанные с отсутствием ключей, и позволят сосредоточиться на других задачах, требующих внимания в вашей работе с инструментами IT и разработкой на базе WSL и Ubuntu.