Решение ошибки apt-key add deprecated в ubuntu 22.04 LTS
С выходом новой версии ubuntu команда apt-key
была помечена как устаревшая. Теперь при использовании команды apt-key вы получите предупреждение. И это предупреждение будет вам мозолить глаза каждый раз, когда вы запускаете apt update
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Для начала посмотрим официальную документацию (man apt-key
). В сообщении видим, что команда apt-key является устаревшей и будет со временем удалена.
DESCRIPTIONapt-key is used to manage the list of keys used by apt to authenticate packages. Packages which have been authenticated using these keys will be considered trusted.Use of apt-key is deprecated, except for the use of apt-key del in maintainer scripts to remove existing keys from the main keyring. If such usage of apt-key is desired the additional installation of theGNU Privacy Guard suite (packaged in gnupg) is required.apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.
Новый метод установки без использования apt-key
Не забудьте поменять переменные $URL $NAME
Поставим ключ в новое расположение в папку /etc/apt/trusted.gpg.d/
wget -qO - $URL | sudo gpg --dearmor -o /usr/share/keyrings/$NAME.gpg
gpg --list-keys --keyring /etc/apt/trusted.gpg.d/$NAME.gpg
Команда выведет в консоль весь список ключей которые хранятся в данном файле.
Или, как вариант, все еще можно посмотреть все ключи с помощью команды apt-key list
Для примера, возьмем ключ Hashicorp который был добавлен старым методом (через apt-key add -)
Получим список всех ключей apt-key list
и найдем наш ключ
/etc/apt/trusted.gpg--------------------pub rsa4096 2023-01-10 [SC] [expires: 2028-01-09]798A EC65 4E5C 1542 8C8E 42EE AA16 FCBC A621 E701sub rsa4096 2023-01-10 [S] [expires: 2028-01-09]
Он находится по умолчанию в /etc/apt/trusted.gpg
Для начала нужно узнать его pubkey ID, тут все просто, последние 8 символов отпечатка ключа (секция pub) являются его ID. В моем примере это A621E701
Переносим
sudo gpg --keyring /etc/apt/trusted.gpg --output - --export A621E701 | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/hashicorp.gpg
Проверяем что ключ существует в новом месте
gpg --list-keys --keyring /etc/apt/trusted.gpg.d/hashicorp.gpg
Видим, что наш ключ там где нужно
/etc/apt/trusted.gpg.d/hashicorp.gpg---------------------------------pub rsa4096 2023-01-10 [SC] [expires: 2028-01-09]798AEC654E5C15428C8E42EEAA16FCBCA621E701sub rsa4096 2023-01-10 [S] [expires: 2028-01-09]
Удалим ключ из старого расположения
apt-key del A621E701
Команда в одну строчку для переноса всех ключей из trusted.gpg
в /etc/apt/trusted.gpg.d/imported-from-trusted-gpg-$K.gpg
for KEY in $(apt-key --keyring /etc/apt/trusted.gpg list | grep -E "(([ ]{1,2}(([0-9A-F]{4}))){10})" | tr -d " " | grep -E "([0-9A-F]){8}\b" ); do K=${KEY:(-8)}; apt-key export $K | sudo gpg --dearmour -o /usr/share/keyrings/imported-from-trusted-gpg-$K.gpg; done
Есть еще маленький костыль как избежать предупреждений в консоли
mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/
Если у вас остались вопросы, вы всегда можете их написать в комментариях ниже.