apt install gccgo-go 不会在 Docker 映像中安装 gccgo

apt install gccgo-go 不会在 Docker 映像中安装 gccgo

概括

apt install gccgo-go不会ggcgo在 Docker 映像构建中安装,但从映像容器运行时会安装。

细节

我有一个 Ubuntu 20.04 Docker 映像,用于测试我编写的一些简单 Go 应用程序。当我在构建映像时使用apt installgolang-go包时,构建完成且没有错误。但是,当我启动并连接到容器并尝试使用构建我的 Go 应用程序时,我收到未找到的错误。当我尝试时,它没有返回任何内容,即未安装可执行文件。当我从容器内运行时,安装完成,我可以使用可执行文件成功构建和运行应用程序。gccgo-gogo build -compiler gccgogccgowhich gccgogccgoapt install -y gccgo-gogccgo

环境

我的项目可用这里在 GitHub 上。Dockerfile 是这里Go 源代码树开始这里我在 macOS 11.3.1 上运行 Docker Desktop 3.3.1,并使用以下顺序构建 Ubuntu 映像并附加到容器:

  1. docker system prune -a
  2. docker compose build
  3. docker compose up -d
  4. docker compose exec ubuntu bash

其他说明

在为这个问题收集数据时,我在构建 Docker 镜像时意外安装了包gccgo而不是。这实际上ggcgo-go做过当我启动容器时,安装gccgo映像中的可执行文件是可用的。它甚至设法“构建”了go/sieve,但这是一个实用程序包,因此它只是验证包是否可构建。当我尝试构建时go/app2,编译器失败了,因为它需要 go v1.16(安装的 gogolang-go是 1.13)。显然,应该只与需要的“gccgo-go gccgo golang gccgo”golang-go配对。, not. also found apackage but that is also v1.3, not the v1.6 that

结语

再次总结一下,它apt install gccgo-go在图像构建中不起作用,但在图像容器中起作用。

我不知道这里是否是提出这个问题的合适地方,但这似乎是一个好的开始。提前感谢您能给我的任何帮助。

答案1

从包装的角度来看 -/usr/bin/gccgo可执行文件仅包含在gccgo 包裹

gccgo-go 包裹仅包含/usr/bin/go 可执行文件本身,并且取决于gccgo-9 包裹哪个提供 /usr/bin/gccgo-9可执行文件。或者golang-go提供它自己的/usr/bin/go

相关内容