it-swarm.com.de

Wie umgehen "apt-key Ausgabe sollte nicht analysiert werden"?

Ich automatisiere meine Docker-Installation. Etwas wie das:

if apt-key fingerprint 0EBFCD88 | grep "Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" > /dev/null
then
  # proceed
fi

In älteren Versionen von apt-key hat dies gut funktioniert, aber bei den letzten Versionen gibt es zwei Probleme:

  1. Ein anderes Ausgabeformat: Ich kann das umgehen
  2. Eine Warnung:

    Warning: apt-key output should not be parsed (stdout is not a terminal)
    

Natürlich kann ich auch hier herumhacken, stderr einfach zu /dev/null umleiten. Es hat mich nur neugierig gemacht:

Wie schlagen diese feinen Leute vor, meine Fingerabdrücke zu überprüfen? Oder verstehe ich das grundlegend falsch, wenn ich es automatisieren will? Besiegt das den Punkt? (Ich denke nicht, da ich den erwarteten Fingerabdruck immer noch manuell von der Website abgehoben habe, aber ich kann es gerne anders sagen ...)

11
Sander Verhagen

In apt-key-Quellen können Sie APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE auf einen nicht leeren Wert setzen, um diese Warnung zu deaktivieren.

Sie können auch "grep -q" verwenden, um stdout nicht in /dev/null umzuleiten.

11
sebt3

Um auf den Teil zu antworten: "Bekomme ich das grundlegend falsch?"

Ich glaube das vielleicht ja. Das ist der Grund der Warnung.

Sie schreiben nicht genau das, was Sie genau tun, aber eines ist zu realisieren:

Die Schlüssel haben einen gewissen Ablauf, so dass der Fingerabdruck in Ihrem Skript nach einiger Zeit veraltet ist und sich möglicherweise nicht mehr wie erwartet verhält.

Sobald das Repository und sein Schlüssel installiert sind, aktualisiert das System den Schlüssel irgendwie automatisch, aber wenn das Repository zum ersten Mal hinzugefügt wird, muss ein aktueller Schlüssel bereitgestellt werden. In meinen Skripten, die die Installation automatisieren, teste ich nicht, ob bereits ein Schlüssel hinzugefügt wurde. Ich teste jedoch, ob das Repository bereits hinzugefügt wurde. Wenn das Repository nicht hinzugefügt wurde, füge ich es zusammen mit einem aktuellen Schlüssel hinzu, den ich immer von seiner URL herunterlade.

1
David L.

Ich ändere den Befehl selbst, um den Stapelmodus zu verwenden, damit er sich nicht über stdout beschwert. Für die größere apt-Taste funktioniert das schnell, getestet unter debian:

sed -i "s%{GPG_EXE}\")' --%{GPG_EXE}\")' --batch --%g" /usr/bin/apt-key

Während für die kleinere apt-Taste dies funktionieren könnte (ungeprüft, da ich mich nicht genau erinnern kann, wo ich diese einfachere Variante gesehen habe):

sed -i 's%GPG_CMD="gpg %GPG_CMD="gpg --batch %g' /usr/bin/apt-key

Sie benötigen Berechtigungen, um auf den/usr/bin/apt-key zu schreiben, also entweder als root laufen oder Sudo verwenden

0
muni764