Если при работе с пакетным менеджером apt вы столкнулись с предупреждением «apt-key is deprecated», эта статья поможет понять причину и научит правильно добавлять GPG-ключи репозиториев через безопасный и современный способ.
Почему появляется ошибка apt-key is deprecated
- Устаревание утилиты
apt-keyиз-за проблем с безопасностью и несоответствия современным практикам. - Распознавание ключей через один общий файл
/etc/apt/trusted.gpgусложняет аудит и управление. - Неудобство удаления или обновления ключей, когда они помещены в один файл.
- Современные версии Debian и Ubuntu рекомендуют хранить ключи в каталоге
/etc/apt/trusted.gpg.d/в отдельном формате.
Пошаговое решение
Шаг 1. Определите ключ, который нужно заменить
Выведите текущие ключи apt для поиска нужного ключа или его ID.
apt-key listКоманда покажет список всех ключей. Запишите идентификатор ключа (pub и uid), который вызывает ошибку или используется в вашем источнике репозитория.
Шаг 2. Загрузите GPG-ключ нового репозитория в файл
Скачайте ключ в формате ASCII и сохраните в каталог /usr/share/keyrings/ под понятным именем. Например:
curl -fsSL | sudo tee /usr/share/keyrings/-archive-keyring.gpg > /dev/nullЗамените на реальный URL с публичным ключом (часто это можно найти в документации репозитория). В результате команда загрузит и сохранит ключ в бинарном формате OpenPGP.
Шаг 3. Отредактируйте файл .list репозитория
Замените в определении репозитория строку с ключом, используя опцию signed-by, чтобы указать путь к ключу.
Например, если у вас в /etc/apt/sources.list.d/example.list есть строка:
deb http://archive.ubuntu.com/ubuntu focal mainто измените её на:
deb [signed-by=/usr/share/keyrings/example-archive-keyring.gpg] http://archive.ubuntu.com/ubuntu focal mainЗдесь signed-by указывает apt использовать только заданный ключ для проверки пакетов из данного источника.
Шаг 4. Удалите старые ключи из apt-key (опционально)
Чтобы убрать устаревшие ключи, можно удалить их из хранилища trusted.gpg. Для этого сначала покажите ключи с идентификаторами:
apt-key listДалее удалите ключ по ID (обратите внимание, что команда требует прав суперпользователя):
sudo apt-key del Замена происходит по коду, например 12345678. Удаление ключей помогает избежать конфликтов и дублирования.
Шаг 5. Обновите список пакетов
sudo apt updateКоманда подтянет метаданные с репозиториев и проверит пакеты в соответствии с новыми ключами.
Альтернативные методы
Если невозможно получить ключ через curl, можно скачать его вручную и конвертировать:
Загрузка публичного ключа и конвертация в формат gpg
wget -O- | gpg --dearmor | sudo tee /usr/share/keyrings/.gpg > /dev/nullЭто скачивает ключ и преобразует его из ASCII в бинарный формат OpenPGP. Такой файл можно использовать как в шаге 3.
Использование -o для указания файла ключа в apt-add-repository
Некоторые PPA и сторонние репозитории позволяют добавлять ключ с помощью:
sudo add-apt-repository 'deb [signed-by=/usr/share/keyrings/.gpg] http://example.repo/ ubuntu main'Рекомендуется проверять документацию репозитория, так как новые стандарты требуют явного указывания ключа.
Проверка результата
- Убедитесь, что при выполнении
sudo apt updateне появляются предупреждения об устаревших ключах или «apt-key».sudo apt updateВывод должен содержать только успешное обновление и отсутствие ошибок, связанных с ключами.
- Проверьте, что ключи расположены в каталоге
/usr/share/keyrings/или/etc/apt/trusted.gpg.d/:ls -l /usr/share/keyrings/Отображаемые файлы должны соответствовать вашим ключам, используемым в репозиториях.
- Если удаляли ключи из
apt-key, проверьте их отсутствие:apt-key listНенужный ключ не должен появляться в списке.
Как избежать в будущем
- Не используйте
apt-key add— переходите на добавление ключей в файлы.gpgпо пути/usr/share/keyrings/. - Всегда указывайте опцию
signed-byв файлах.list, чтобы менеджер apt знал, какой ключ применять. - Регулярно проверяйте свои репозитории и обновляйте ключи согласно официальной документации.
FAQ
Почему apt-key больше не рекомендуется?
Из-за проблем безопасности и проблем с управлением ключами, apt-key объявлен устаревшим и будет удалён в будущих версиях.
Что делать, если репозиторий не предоставляет ключ в нужном формате?
Загрузите ключ, затем конвертируйте через gpg --dearmor в бинарный формат.
Можно ли использовать ключи из /etc/apt/trusted.gpg вместо /usr/share/keyrings/?
Технически да, но это нежелательно — рекомендуется хранить ключи отдельно и указывать их явно для безопасности.
Смотрите также: Как настроить репозитории в Debian и Ubuntu.