Résumé
apt install gccgo-go
n'installe pas ggcgo
dans la construction d'une image Docker, mais c'est le cas lorsqu'elle est exécutée à partir d'un conteneur d'images.
Détails
J'ai une image Docker Ubuntu 20.04 que j'ai créée pour tester quelques applications Go simples que j'ai écrites. Lorsque je apt install
その golang-go
y gccgo-go
pendant la construction de l'image, la construction se termine sans erreur. Mais lorsque je fais apparaître et que j'attache un conteneur et que j'essaie de construire mes applications Go avec go build -compiler gccgo
J'obtiens une erreur qui gccgo
n'a pas été trouvé. Lorsque j'essaie which gccgo
il ne renvoie rien, c'est-à-dire que l'option gccgo
L'exécutable n'est pas installé. Lorsque j'exécute ensuite apt install -y gccgo-go
depuis l'intérieur du conteneur, l'installation est terminée et je peux construire et exécuter les applications avec succès à l'aide de l'outil d'installation du conteneur. gccgo
exécutable.
Environnement
Mon projet est disponible aquí sur GitHub. Le fichier Docker est aquí et l'arbre du code source de Go commence aquí . J'utilise Docker Desktop 3.3.1 sur macOS 11.3.1 et j'utilise cette séquence pour construire l'image Ubuntu et l'attacher au conteneur :
docker system prune -a
docker compose build
docker compose up -d
docker compose exec ubuntu bash
Autres notes
En rassemblant les données pour cette question, j'ai accidentellement installé le package gccgo
au lieu de ggcgo-go
lors de la construction d'une image Docker. En fait, cela hizo installer le gccgo
L'exécutable de l'image était disponible lorsque j'ai démarré un conteneur. Il a même réussi à "construire" go/sieve
mais comme il s'agit d'un paquet utilitaire, il s'agit seulement de vérifier que le paquet peut être construit. Lorsque j'ai essayé de construire go/app2
le compilateur a échoué parce qu'il nécessitait go v1.16 (le go installé par l'utilisateur). golang-go
est de 1,13). Clairement, golang-go
ne devrait jamais être jumelé avec 'gccgo-go , not
gccgo . also found a
golang package but that is also v1.3, not the v1.6 that
gccgo` nécessite.
Epilogue
Encore une fois, en résumé, apt install gccgo-go
ne fonctionne pas dans la construction de l'image mais il fonctionne dans le conteneur d'image.
Je ne sais pas si c'est le bon endroit pour poser cette question, mais cela m'a semblé être un bon point de départ. Merci d'avance pour toute aide que vous pourrez m'apporter.