Ошибка apt NO_PUBKEY и «The repository is not signed»: нет ключа репозитория
Сторонний репозиторий подписан ключом, которого нет на сервере, и apt перестал его обновлять. Найдите этот репозиторий и либо поставьте ключ заново, либо отключите его.
Содержание 9
Что сделать прямо сейчас
- Найдите в ошибке адрес репозитория и файл, где он подключён, — шаг 1.
- Если программа из этого репозитория нужна, поставьте ключ по инструкции её разработчика — шаг 2.
- Если не нужна — отключите репозиторий — шаг 3.
Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Что значит это сообщение
Так выглядит вывод sudo apt update, когда для репозитория нет ключа (вместо example.com будет адрес вашего репозитория, вместо 1A2B… — номер ключа):
W: GPG error: https://example.com/repo stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1A2B3C4D5E6F7A8B
E: The repository 'https://example.com/repo stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.Строки вывода apt начинаются с приставки: E: — ошибка, W: — предупреждение, N: — пояснение к ним.
Каждый репозиторий подписывает свой список пакетов. apt проверяет подпись открытым ключом, который лежит на сервере. NO_PUBKEY значит «нет открытого ключа с таким номером». Без проверки apt этот репозиторий не обновляет — так он защищает сервер от подменённых пакетов. Репозитории Ubuntu при этом обновляются, ошибка касается только одного адреса.
Причины:
- ключ не поставили, когда подключали репозиторий;
- разработчик сменил ключ, а на сервере остался старый;
- файл ключа удалили или в настройке репозитория указан неверный путь к нему.
Шаг 1. Найдите, какой репозиторий без ключа
Возьмите адрес из строки с ошибкой — в примере это https://example.com/repo. Найдите файл, где этот репозиторий подключён (вместо example.com напишите свой адрес без https://):
grep -r "example.com" /etc/apt/sources.list /etc/apt/sources.list.d/Команда покажет имя файла и строку с адресом, например:
/etc/apt/sources.list.d/example.sources:URIs: https://example.com/repoОткройте файл для просмотра:
cat /etc/apt/sources.list.d/example.sourcesНайдите строку Signed-By: — в ней путь к файлу ключа. В файлах с окончанием .list путь стоит в квадратных скобках: [signed-by=/usr/share/keyrings/…]. Проверьте, есть ли такой файл:
ls -l /usr/share/keyrings/Если строки Signed-By нет или файла ключа нет в папке — ключ не поставлен.
Шаг 2. Если репозиторий нужен — поставьте ключ заново
Откройте инструкцию по установке программы на её официальном сайте — раздел для Ubuntu или Debian. Повторите шаги, где скачивается ключ и подключается репозиторий: если разработчик сменил ключ, в инструкции уже будет новый.
Ubuntu советует хранить ключи сторонних репозиториев в папке /usr/share/keyrings/ и указывать путь к ключу в строке Signed-By файла репозитория. Команду apt-key не используйте: в Ubuntu она не рекомендуется.
После этого обновите список пакетов:
sudo apt updateШаг 3. Если репозиторий не нужен — отключите его
Если программа из этого репозитория больше не нужна, уберите файл репозитория из папки настроек apt. Удобнее перенести его в папку root — так его можно вернуть:
sudo mv /etc/apt/sources.list.d/example.sources /root/Вместо example.sources подставьте имя файла из шага 1. Если адрес нашёлся в файле /etc/apt/sources.list, откройте его в редакторе: sudo nano /etc/apt/sources.list (как работать с редактором — в разделе про nano) и поставьте знак # в начало строки с этим адресом. Затем:
sudo apt updateПрограммы, уже поставленные из этого репозитория, останутся на сервере, но обновлений для них больше не будет.
Как проверить
Запустите sudo apt update. Строк GPG error и is not signed больше нет, а для адреса репозитория появились строки Hit: или Get:.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: … | Ключа нет, но раньше список пакетов скачивался. apt оставил старый список — новых версий не будет. Исправляется так же |
| W: … Key is stored in legacy trusted.gpg keyring … | Предупреждение: ключ лежит в старом общем файле ключей. Обновление работает. Чтобы убрать предупреждение, поставьте ключ по шагу 2 |
| E: The repository '…' does not have a Release file. | По этому адресу нет списка пакетов для вашей версии Ubuntu или адрес указан с ошибкой. Сверьте адрес с инструкцией разработчика |
Тексты сообщений на этой странице сверены с исходным кодом apt 2.7.14 — эта версия стоит в Ubuntu 24.04. В других версиях Ubuntu слова могут немного отличаться.
Источники
- Исходный код apt 2.7.14: gpgv.cc — тексты про NO_PUBKEY и legacy trusted.gpg keyring.
- Исходный код apt 2.7.14: acquire-item.cc — тексты is not signed, does not have a Release file и про проверку подписи.
- Ubuntu Server: сторонние репозитории — где хранить ключи, строка Signed-By и apt-key.
- man sources.list — формат файлов репозиториев.
- man apt-key — почему apt-key устарел.
Сверено 9 октября 2026 года.
Что почитать дальше
- Как обновлять Ubuntu вручную — как правильно обновлять сервер.
- Unmet dependencies — если пакеты из стороннего репозитория конфликтуют с пакетами Ubuntu.
- Все ошибки apt и sudo.
Проверено и обновлено: 09.10.2026