Предупреждение apt-key: вывод apt-key не должен анализироваться (stdout не является терминалом)

ОС: Debian 10

Я пробовал решение, представленное здесь: Как обойти "вывод apt-key не должен анализироваться"?

этот: APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn - не сработало.

Тогда я попробовал сделать:

DOCKER_GPG="9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88"

apt-key fingerprint 0EBFCD88 > docker_key

DOCKER_DL_GPG=$(cat docker_key | grep 9DC8)

if [[ "$DOCKER_GPG" == "$DOCKER_DL_GPG" ]]; then
  # do
else
  # don't
fi

Но это не работает, потому что apt-key ошибка выходит из скрипта (wth!)

Мне нужно установить докер в скрипте, но я не могу проверить подпись из-за ошибки. Это должно быть автоматизировано, я не хочу пропускать проверку, должен быть способ, которым люди это делают, три вопроса:

  1. Как еще я могу проверить отпечаток пальца? Я попробовалgpg --list-keys --with-fingerprint но не работает.
  2. Есть ли другой способ проверить отпечаток пальца докера?
  3. Как правильно использовать apt-key для проверки отпечатков пальцев в скрипте?

Спасибо!

1 ответ

Хотите поделиться своим сценарием? Я работаю под bash, и предупреждение не приводит к прерыванию сценария, даже если он запущен с set -e. Вот что я использовал для этой цели:

      #!/bin/bash

DOCKER_FINGERPRINT="9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88"

apt-key fingerprint 0EBFCD88 > /tmp/temp_docker_fingerprint
DOWNLOADED_FINGERPRINT=$(cat /tmp/temp_docker_fingerprint | grep "0EBF CD88" | xargs)
rm /tmp/temp_docker_fingerprint

if [[ "$DOCKER_FINGERPRINT" == "$DOWNLOADED_FINGERPRINT" ]]; then
   echo "Downloaded Docker GPG fingerprint matches the expected value ($DOCKER_FINGERPRINT)"
else
   echo "ERROR:   Downloaded Docker GPG fingerprint does not match the expected value ($DOCKER_FINGERPRINT)"
   echo "ERROR:   Exiting Docker setup with error.  See scripts/docker.sh to troubleshoot."
   exit -1
fi
Другие вопросы по тегам