运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中
Posted
技术标签:
【中文标题】运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中【英文标题】:run GO111MODULE=on go install . ./cmd/... in cloud init 【发布时间】:2022-01-01 10:07:08 【问题描述】:我有一个使用 cloud init 部署的 bash 脚本,我的 bash 脚本包含以下部分代码
GO111MODULE=on go install . ./cmd/...
直接在已部署服务器的终端中运行我的 bash 脚本时,它按预期工作。但是当我在云配置中使用 runcmd 运行它时,这部分脚本:
GO111MODULE=on go install . ./cmd/...
没有被执行,有人知道为什么吗?
runcmd:
- [ bash, /usr/local/bin/myscript.sh ]
【问题讨论】:
【参考方案1】:runcmd
中的正确 shell 执行将是(如在 Cloud config examples 中所见):
- [ bash, -c, /usr/local/bin/myscript.sh ]
或:
- [ /usr/local/bin/myscript.sh ]
假设您的脚本以 shebang #!/bin/bash
开头
另外,您需要在脚本中添加任何环境变量,因为Cloud config examples 不包含任何明显的设置方式。
#!/bin/bash
export GO111MODULE=on
export ...
【讨论】:
myscript.sh 使用 runcmd 执行,但是 GO111MODULE=on 的部分没有执行,或者确实执行但路径错误,不确定!!直接在服务器上运行 myscript.sh,工作正常 @iFadi 我将在您的脚本myscript.sh
中添加export GO111MODULE=on
inside,并确保使用bash -c
调用所述脚本。
感谢提示,但它仍然不起作用,我在 /var/log/syslog 下发现执行 GO 命令后出现以下错误:build cache is required, but could not be located: GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are defined
我不知道如何修复它.
@iFadi 我已经编辑了答案以包含环境变量。【参考方案2】:
感谢 VonC 的提示,我能够解决此问题。我将以下内容添加到 myscript.sh
GOCACHE=/root/.cache/go-build
export GOCACHE
export GO111MODULE=on
go install . ./cmd/...
runcmd:
- [ bash, -c, /usr/local/bin/myscript.sh ]
脚本现在从 cloud-init 部署和运行。
【讨论】:
干得好。赞成。以上是关于运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中的主要内容,如果未能解决你的问题,请参考以下文章