In mit Go gebauten Binärdateien sind Informationen zu verwendeten Abhängigkeiten und Build-Einstellungen eingebettet. Mit dem Befehl go version -m lassen sich diese Informationen auch ohne Quellcode direkt aus dem Binary auslesen.
Einsatzfälle
- Abhängigkeiten eines in Produktion laufenden Binaries prüfen
- Prüfen, ob Bibliotheken mit bekannten Sicherheitslücken enthalten sind
- Build-Einstellungen wie GOOS und GOARCH verifizieren
- Nachvollziehen, aus welchem Commit ein Binary gebaut wurde
Verwendung
go version -m <binary-pfad>Ausgabe verstehen
Die Ausgabe ist in mehrere Abschnitte unterteilt.
| Präfix | Bedeutung |
|---|---|
path | Import-Pfad des Moduls |
mod | Hauptmodul. (devel) bedeutet lokaler Build |
dep | Abhängigkeitsmodul inkl. Version und Checksumme |
build | Build-Einstellungen und VCS-Informationen |
Wichtige Felder im Abschnitt build:
| Schlüssel | Beschreibung |
|---|---|
-compiler | Verwendeter Compiler (normalerweise gc) |
CGO_ENABLED | Ob CGO aktiviert ist |
GOOS / GOARCH | Ziel-OS / Ziel-Architektur |
vcs.revision | Commit-Hash, aus dem gebaut wurde |
vcs.time | Zeitstempel des Commits |
vcs.modified | Ob beim Build uncommittete Änderungen vorlagen |
Ausführungsbeispiel
go version -m ./output./output: go1.19 path github.com/mktbsh/output mod github.com/mktbsh/output (devel) dep github.com/aws/aws-lambda-go v1.34.1 h1:M3a/uFYBjii+... dep github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6... ... build -compiler=gc build CGO_ENABLED=0 build GOARCH=amd64 build GOOS=linux build vcs.revision=39792fdacec6dc82b3f6335cb6b921c138f37625 build vcs.time=2022-08-18T08:50:08Z build vcs.modified=trueIn diesem Beispiel wurde für Linux/amd64 gebaut, CGO war deaktiviert und der Build stammt aus Commit 39792fd..., allerdings mit uncommitteten Änderungen (vcs.modified=true).
Verwandt
go version- Go-Version prüfengo list -m all- Abhängigkeiten aus dem Quellcode auflisten
hsb.horse