【问题标题】:/bin/sh: 1: gvm: not found/bin/sh: 1: gvm: 未找到
【发布时间】:2017-01-03 16:00:50
【问题描述】:

问题:

我正在尝试创建一个 Dockerfile 来安装所有组件以运行 Go、安装 GVM (Go Version Management) 以及安装特定的 Go 版本。

错误:

当我尝试构建容器时:

docker build -t ##### .

我收到此错误:

/bin/sh: 1: gvm: 未找到

命令 '/bin/sh -c gvm install go1.4 -B' 返回非零代码:127

安装在这里:

/root/.gvm/scripts/env/gvm
/root/.gvm/scripts/gvm
/root/.gvm/bin/gvm

我尝试了什么:

显然可以安装 GVM 但无法使用。为什么? 我想也许我需要刷新 .bashrc.bash_profile ......但这不起作用,因为它们不存在。

Dockerfile:

FROM #####/#####

#Installing Golang dependencies
RUN apt-get -y install curl git mercurial make binutils bison gcc build-essential

#Installing Golang

RUN ["/bin/bash", "-c", "bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)"]
#gvm does not exist here... why?
RUN gvm install go1.4 -B
RUN gvm use go1.4

问题:

为什么似乎没有安装 GVM?如何摆脱错误?

【问题讨论】:

  • 它在哪里安装gvm?它在你的道路上吗?为什么在容器中需要gvm,它通常是为应用程序专门构建的?
  • @JimB 出于开发原因使用它。认为处理 go 更新会更容易,检查 GVM 安装位置的更新。 GVM 通常会自动添加到 PATH 中,不是吗?它不在 PATH 中,我稍后会添加它,看看是否有效。

标签: go docker dockerfile gvm


【解决方案1】:

您的 shell 是 /bin/sh,但 gvm 将其初始化放入 ~/.bashrc,并期望 /bin/bash

您需要获取 gvm 初始化脚本以从非交互式 bash shell 运行命令:

RUN ["/bin/bash", "-c", ". /root/.gvm/scripts/gvm && gvm install go1.4 -B"]
RUN ["/bin/bash", "-c", ". /root/.gvm/scripts/gvm && gvm use go1.4"]

或者更好的方法是将您要执行的命令放在单个 bash 脚本中并将其添加到图像中。

#!/bin/bash
set -e

source /root/.gvm/scripts/gvm
gvm install go1.4
gvm use go1.4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多