Was bedeutet BuildID SHA1?

12

Ich habe mich im Ubuntu Unity Terminal-Fenster umgesehen, als dies auftauchte:

Als ich tippte:

file /bin/ls

Die Ausgabe ist:

/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x214a38d0db472db559f0dabf0ae97f82fea83e03, stripped

Ich wollte überprüfen, ob sha1 korrekt ist, und habe daher Folgendes eingegeben:

openssl sha1 /bin/ls

Die Ausgabe ist jedoch wie folgt:

SHA1(/bin/ls)= 8800fee57584ed1c44b638225c2f1eec818a27c2

Obwohl sie hexadezimal gleich lang sind, scheinen sie nicht übereinzustimmen. Habe ich etwas verpasst? Oder bezieht sich das BuildID[sha1]auf etwas anderes?

Vern
quelle

Antworten:

15

Oder bezieht sich die BuildID [sha1] auf etwas anderes?

BuildID ist NICHT der Hash einer Binärdatei oder damit verbunden. Es ist eine Kennung für die "Build" -Sitzung (oder Kompilierungssitzung), die diese Binärdatei erzeugt hat. Es dient hauptsächlich Debug-Zwecken, damit die Entwickler die Protokolle, die Umgebung usw. anhand der Sitzungsnummer $ BuildID anzeigen und versuchen können, das Problem zu beheben, es zu reproduzieren usw.

Übrigens sind SHA1-Hashes von allem immer 160 Bit lang :)

ish
quelle
Könnte dies beim Fingerabdruck des Build-Tool-Cache verwendet werden? Zum Beispiel könnten Scons diese ID einfach lesen, anstatt MD5-Hashes von Zwischenobjekten und Bibliotheken für die Verwendung bei der Abhängigkeitsprüfung neu berechnen zu müssen.
Nordlöw