Les binaires compilés avec Go embarquent des informations sur les dépendances utilisées et les paramètres de build. Avec la commande go version -m, vous pouvez extraire ces informations directement depuis le binaire, même sans code source.
Cas d’usage
- Vérifier les dépendances d’un binaire en production
- Contrôler la présence éventuelle de bibliothèques vulnérables
- Vérifier les paramètres de build (GOOS, GOARCH, etc.)
- Identifier le commit à l’origine du binaire
Utilisation
go version -m <chemin-du-binaire>Lire la sortie
La sortie est divisée en plusieurs sections.
| Préfixe | Signification |
|---|---|
path | Chemin d’import du module |
mod | Module principal. (devel) indique un build local |
dep | Module de dépendance avec version et checksum |
build | Paramètres de build et informations VCS |
Principaux éléments de la section build :
| Clé | Description |
|---|---|
-compiler | Compilateur utilisé (généralement gc) |
CGO_ENABLED | Activation/désactivation de CGO |
GOOS / GOARCH | OS / architecture cible |
vcs.revision | Hash du commit source |
vcs.time | Horodatage du commit |
vcs.modified | Indique s’il y avait des changements non commités |
Exemple d’exécution
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=trueDans cet exemple, le binaire a été compilé pour Linux/amd64, avec CGO désactivé, à partir du commit 39792fd..., et avec des changements non commités (vcs.modified=true).
Liens connexes
go version- vérifier la version de Gogo list -m all- lister les dépendances depuis le code source
hsb.horse