Вопрос или проблема
Это продолжение темы подавления предупреждений apt-key.
Когда у меня установлены устаревшие и deprecated ключи, я вижу предупреждения, когда я устанавливаю что-либо с помощью apt-get
или просто обновляюсь через:
apt-get update -qq > /dev/null
Я вижу предупреждения о legacy ключах:
W: http://packages.icinga.com/ubuntu/dists/icinga-jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://deb.goaccess.io/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Я осведомлен о проблемах безопасности. Для моего случая, я просто не хочу засорять консоль. Я хочу скрыть эти предупреждения, но ошибки все же должны отображаться.
Как я могу этого добиться? (Я не хочу перемещать ключи или импортировать их “правильным” способом.)
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE
не применяется, когда выполняется apt-get update
, как я пробовал
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-get update -qq > /dev/null`
но предупреждения все равно отображаются.
Я решил переместить ключи в папку /etc/apt/trusted.gpg.d/
; так как я использую команду в init скрипте bash, я проверяю их наличие, и только если файл существует, перемещаю его:
[ ! -f /etc/apt/trusted.gpg ] || mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/
Теперь предупреждения не будут отображаться:
apt-get update -qq > /dev/null
Конечно, риски безопасности все же присутствуют.
Ответ или решение
Теория
Когда вы выполняете команду apt-get update
, утилита APT обновляет список доступных пакетов и версий, которые могут быть установлены из репозиториев. В некоторых сценариях это может вызвать предупреждения о том, что ключи хранятся в устаревшей связке ключей /etc/apt/trusted.gpg
. Эти предупреждения указывают на то, что ключи шифрования используются для аутентификации репозиториев, но они находятся в месте, которое считается устаревшим.
Такие предупреждения обычно сопровождаются рекомендацией переместить ключи в более современное местоположение – обычно это каталог /etc/apt/trusted.gpg.d/
. Это связано с улучшением безопасности и более управляемым подходом к хранению и управлению ключами.
Пример
Предположим, у вас есть сценарии, в которых при выполнении apt-get update
, выводятся следующие предупреждения:
W: http://packages.icinga.com/ubuntu/dists/icinga-jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Вам известно, что эти предупреждения свидетельствуют об использовании устаревшего метода хранения ключей, и вы решаете их игнорировать, желая видеть только ошибки, чтобы избежать захламления консоли.
Применение
Первоначально, ваш подход состоял в попытке использовать переменную среды APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE
, которая, к сожалению, не применима в случае apt-get update
. Есть несколько других способов скрыть эти предупреждения:
-
Использование фильтрации вывода
Чтобы скрыть предупреждения и оставить только ошибки, вы можете подвергнуть вывод команды фильтрации. Один из способов сделать это — использовать команды Linux для фильтрации стандартного вывода и ошибок. Например:apt-get update 2>&1 | grep -v "Key is stored in legacy trusted.gpg keyring"
Эта команда перенаправит как стандартный вывод (stdout), так и стандартные ошибки (stderr) на вход команды
grep
, и с помощью-v
исключит строки с упоминанием устаревшей связки ключей. -
Создание пользовательского скрипта Bash
Вы можете создать Bash-скрипт, который выполняетapt-get update
, затем анализирует и фильтрует вывод по вашему усмотрению.#!/bin/bash OUTPUT=$(apt-get update 2>&1) echo "$OUTPUT" | grep -v "Key is stored in legacy trusted.gpg keyring"
-
Переоперационное окружение
В некоторых случаях вы можете полностью подавить предупреждения, перенаправляя их в/dev/null
:apt-get update 2> /dev/null
Тем не менее, использование этого подхода может скрыть и другие важные сообщения об ошибках.
-
Логирование в файл
Если вы предпочитаете анализировать логи позже, вы можете направить вывод в файл и использовать инструмент обработки текста для анализа в удобное время:apt-get update > update.log 2>&1 grep -v "Key is stored in legacy trusted.gpg keyring" update.log > filtered_update.log
Заключение
Таким образом, хотя предупреждения о хранении ключей в устаревшей папке можно игнорировать в определённых случаях, рекомендуется в долгосрочной перспективе стремиться использовать более устойчивые и поддерживаемые методы управления ключами, такие как перемещение их в /etc/apt/trusted.gpg.d/
. Это может улучшить как безопасность, так и управляемость репозиториев. Однако если вам необходимо скрыть предупреждения на начальном этапе, описанные выше методы помогут вам достичь этого.