首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头上安装asdf插件时被拒绝的权限(github codespace)

在码头上安装asdf插件时被拒绝的权限(github codespace)
EN

Stack Overflow用户
提问于 2022-06-20 11:58:59
回答 2查看 588关注 0票数 0

我在一个dockerfile上有一些脚本,目的是在一个Github编码空间的立方体容器上安装Github编码空间的立方体容器的插件ruby插件(使用devcontainer.json,dockerfile,dockerfile.)。

Dockerfile:

代码语言:javascript
复制
RUN git clone --depth 1 https://github.com/asdf-vm/asdf.git $HOME/.asdf && \
    echo '. $HOME/.asdf/asdf.sh' >> $HOME/.bashrc && \
    echo '. $HOME/.asdf/completions/asdf.bash' >> $HOME/.bashrc && \
    echo '. $HOME/.asdf/asdf.sh' >> $HOME/.profile

第一部分工作正常。我确定,因为如果我在上面运行这个运行时钟,我可以构建我的github codespace,没有任何错误,而且我也确定asdf安装了,因为我通过命令终端检查它

代码语言:javascript
复制
$ sudo su
$ asdf list

这将从asdf输出一条消息,显示它确实安装了:

代码语言:javascript
复制
no plusins installed

但是下面的第二部分,我尝试安装asdf的ruby插件,会出现一个错误:

代码语言:javascript
复制
RUN $HOME/.bashrc && \
    # install asdf ruby plugin
    asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && \
    # add ruby version
    asdf install ruby $RUBY_VERSION && \
    # set our machine e.g our container's global Ruby version
    asdf global ruby $RUBY_VERSION

我得到的错误是:

代码语言:javascript
复制
 /bin/sh: 1: /root/.bashrc: Permission denied

对于错误输出的更大上下文,命令输出终端显示:

代码语言:javascript
复制
#6 [ 3/11] RUN git clone --depth 1 https://github.com/asdf-vm/asdf.git $HOME/.asdf &&     echo '. $HOME/.asdf/asdf.sh' >> $HOME/.bashrc &&     echo '. $HOME/.asdf/completions/asdf.bash' >> $HOME/.bashrc &&     echo '. $HOME/.asdf/asdf.sh' >> $HOME/.profile
#6 0.746 Cloning into '/root/.asdf'...
#6 DONE 1.6s

#7 [ 4/11] RUN $HOME/.bashrc &&     asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git &&     asdf install ruby latest &&     asdf global ruby latest
#7 0.658 /bin/sh: 1: /root/.bashrc: Permission denied
#7 ERROR: executor failed running [/bin/sh -c $HOME/.bashrc &&     asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git &&     asdf install ruby $RUBY_VERSION &&     asdf global ruby $RUBY_VERSION]: exit code: 126

对于这个RUN块的第一行,我尝试了不同的方法,但是我总是遇到一些错误:

如果我做了RUN sudo $HOME/.bashrc,我得到了错误

代码语言:javascript
复制
sudo: /root/.bashrc: command not found

如果我做了RUN sudo su $HOME/.bashrc,我得到了错误:

代码语言:javascript
复制
su: user /root/.bashrc does not exist or the user entry does not contain all the required fields

如果我做了RUN su vscode $HOME/.bashrc,我得到了错误:

代码语言:javascript
复制
bash: /root/.bashrc: Permission denied

我很早就开始使用对接程序了,所以我找不到如何绕过它安装ruby插件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-20 16:06:29

第二轮应该是这样的:

代码语言:javascript
复制
RUN bash -c "source $HOME/.bashrc  && asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git && asdf install ruby RUBY_VERSION && asdf global ruby $RUBY_VERSION"

是的,很难看,但老实说,我不知道分道扬镳是否安全。

关键是您必须源.bashrc才能将其应用于所有剩余的命令。

票数 1
EN

Stack Overflow用户

发布于 2022-06-20 13:16:57

.bashrc是每次登录时运行的文件/脚本(打开终端),您不能像其他脚本一样手动运行它。

您可以尝试类似于这个RUN exec $HOME/.bashrcRUN source $HOME/.bashrc的东西,而只需像其他脚本一样运行它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72686672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档