【问题标题】:getting error /bin/sh: 1: source: not found得到错误 /bin/sh: 1: source: not found
【发布时间】:2016-11-17 05:37:19
【问题描述】:

我正在尝试构建 docker 并安装 nvm

一些代码行

RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash
    RUN source ~/.profile

curl 运行成功,但是在运行源代码时,出现以下错误

/bin/sh: 1: source: not found
The command '/bin/sh -c source ~/.profile' returned a non-zero code: 127

【问题讨论】:

  • 讨厌把它给你。但是找不到源意味着它试图从特定目录安装的任何东西都找不到。那么您确定您完全按照您所遵循的教程进行操作并且没有遗漏任何内容吗?
  • 是的,已经从教程中粘贴了这段代码。我想安装 nvm 所以点击这个链接liquidweb.com/kb/…
  • 你能链接到教程的来源吗?未找到来源非常不言自明
  • 教程说:运行上述命令后,您可能会收到类似于以下内容的输出:关闭并重新打开终端以开始使用 nvm 按照输出建议的操作,然后关闭并重新打开终端会话,或运行命令。
  • 这里我使用 docker 文件。我如何打开和关闭 docker image 的终端。我直接从我的 ubuntu 终端构建 docker 文件。

标签: node.js ubuntu docker dockerfile nvm


【解决方案1】:

来自Docker docs

可以使用 SHELL 更改 shell 表单的默认 shell 命令。

在 shell 形式中,您可以使用 \(反斜杠)继续单个 RUN 指令到下一行。例如,考虑以下两行: RUN /bin/bash -c 'source $HOME/.bashrc ;\ echo $HOME' 他们一起 相当于这一行: RUN /bin/bash -c 'source $HOME/.bashrc ;回声 $HOME'

注意:要使用除“/bin/sh”之外的其他 shell,请使用 exec 形式通过所需的外壳。例如,运行 ["/bin/bash", "-c", "回声你好"]

你可以试试:

RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash
# RUN source ~/.profile
RUN ["/bin/bash", "-c", "source ~/.profile"]

【讨论】:

  • 这里我遇到了同样的问题。
  • RUN ["/bin/bash", "-c", "source ~/.profile"] 行发生了什么?
  • 命令'/bin/bash -c source ~/.profile'返回一个非零代码:1
  • 现在我又遇到了其他错误 --- RUN npm install---- 也尝试了 ---RUN ["/bin/bash", "-c", "npm install"] ---
  • 看起来您正在尝试在 Docker 容器中构建 node.js 应用程序?您可能需要发布完整的源代码或源代码链接以供审核。
【解决方案2】:

我解决了这个问题

而不是通过"source ~/.profile"安装nvm

我改成

RUN curl   https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bash

ENV NVM_DIR=/root/.nvm
ENV NODE_VERSION=4.5.0
RUN . $HOME/.nvm/nvm.sh && nvm install $NODE_VERSION && nvm alias default $NODE_VERSION && nvm use default

【讨论】:

    猜你喜欢
    • 2018-06-06
    • 2019-09-11
    • 2015-12-18
    • 2020-07-28
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多