/bin/sh: tnvm: command not found
Closed this issue · 8 comments
harrydengchao commented
我在Dockerfile文件中使用 tnvm命令,提示我tnvm 找不到。我尝试了一些方法,没能解决。
目前 Issues没看到相关问题,不知道这个该怎么解决?
配置如下:
RUN npm install -g n
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN wget --no-check-certificate -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash && \
export METHOD=script && \
source "$HOME/.bashrc" && \
tnvm install "node-v$(n --lts)" && \
tnvm use "node-v$(n --lts)"
提示如下:
Cloning into '/root/.tnvm'...
=> Appending source string to /root/.bashrc
=> Try source /root/.bashrc to start using tnvm
/bin/sh: tnvm: command not found
harrydengchao commented
这个解决了
. "$HOME/.tnvm/tnvm.sh"
harrydengchao commented
但是又面临一个问题,我每次使用npm 或者 node 的时候,都需要执行 tnvm.sh 脚本。否则无法识别 tnvm,这个有好的解决方案吗?
JacksonTian commented
操作系统是什么?
harrydengchao commented
- 宿主机win10
- 容器系统 Ubuntu 16.04.1 LTS
JacksonTian commented
harrydengchao commented
应该是我描述漏掉了。
我现在需要写在同一层才能识别 tnvm,如下:
RUN . "$HOME/.tnvm/tnvm.sh" && \
npm install -g cnpm && \
cnpm install -g weex-toolkit@beta
分成两层写的话,不能识别 tnvm
RUN . "$HOME/.tnvm/tnvm.sh"
RUN npm install -g cnpm && \
cnpm install -g weex-toolkit@beta
不知道这样描述是否清晰
joyeecheung commented
你可以使用 ENV
把环境变量加到 docker 容器里,代替 tnvm.sh 里的 export,因为 tnvm 是通过 .bashrc 修改环境变量来把安装的 node 添加到路径的,但是在 docker 里 RUN 不会保留上一次的环境,所以需要手动改。
ENV PATH $TNVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
或者如果是 alinode
ENV PATH $TNVM_DIR/versions/alinode/v$ALINODE_VERSION/bin:$PATH
($TNVM_DIR
如果使用tnvm前没有设置默认是$HOME/.tnvm
)
这是 docker 的通病所以先关了这个 issue,有问题可以继续回复
harrydengchao commented
很棒!是我对Docker不够了解导致的,(^__^) 。非常谢谢!