1 votes

apt install gccgo-go n'installe pas gccgo dans l'image Docker

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 :

  1. docker system prune -a
  2. docker compose build
  3. docker compose up -d
  4. 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.

0voto

N0rbert Points 86925

Du point de vue de l'emballage - le /usr/bin/gccgo L'exécutable est contenu exclusivement dans gccgo paquet .

El gccgo-go paquet contient uniquement /usr/bin/go exécutable par lui-même et il dépend de gccgo-9 paquet dont fournit /usr/bin/gccgo-9 exécutable. Autre possibilité : golang-go paquet fournit son propre /usr/bin/go .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X