【发布时间】:2020-11-12 13:09:09
【问题描述】:
我需要用 Travis 构建一个 Go(1.13+ 由于模块)二进制文件。诀窍是,我需要使用 CGO。
因此,我有一个 language: cpp 和 Focal 配置。不过,Travis 的默认打包版本是 Go 1.11。
所以我尝试安装 Go 1.13:
- 使用 apt:
Setting up golang (2:1.13~1ubuntu2) ...
- 使用给我:
unset GOOS;
unset GOARCH;
export GOROOT='/home/travis/.gimme/versions/go1.13.1.linux.amd64';
export PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}";
go version >&2;
export GIMME_ENV="/home/travis/.gimme/envs/go1.13.1.env"
当我尝试调用这些特定版本时出现错误:
compile: version "go1.11.1" does not match go tool version "go1.13.1"
这可能是由于 PATH 和 Travis-Go 中的其他自定义,因为:
$ which go
/home/travis/.gimme/versions/go1.11.1.linux.amd64/bin/go
当尝试通过以下方式修复PATH 时出现相同错误时,它甚至会失败:
- export PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}"
- go build
有谁知道如何覆盖默认的 Travis Go 版本或至少反向 Travis Go-changes 以便可以使用 apt Go?
编辑:
添加了更多 Travis 实例的示例输出。
【问题讨论】:
-
您的模块(或其依赖项之一)将 go1.13.1 定义为编译所需的最低版本。检查你的模块文件。
-
这是明确且正确的。这就是我在第一句话中提到的
-
嗯,你没有那么明确。你的假设是正确的。如果您在特定配置中向我们提供 PATH 的输出,尤其是
which go的输出,那将更有帮助。 -
很公平。现在试着更具体一些。
-
不确定是否可以导出 PATH。试试
- PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}" go build