![当从 Dockerfile 调用 docker build 时,如何使用 yaourt 安装 arch linux 包?](https://linux22.com/image/1522673/%E5%BD%93%E4%BB%8E%20Dockerfile%20%E8%B0%83%E7%94%A8%20docker%20build%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20yaourt%20%E5%AE%89%E8%A3%85%20arch%20linux%20%E5%8C%85%EF%BC%9F.png)
我正在尝试使用官方的pritunl/archlinux图片。我已经安装了 yaourt 并将其提交到 rusk85/archbase。我的 Dockerfile 如下所示:
1: FROM rusk85/archbase
2: CMD /bin/bash
3: RUN yaourt -Sy --noconfirm atlassian-jira
这会导致错误:
Running makepkg as root is not allowed as it can cause permanent, catastrophic damage to your system.
然后我尝试在第 2 行后添加:
RUN useradd -ms /bin/bash jira
USER jira
然后它又要求我输入密码。另一种方法是使用这个而不是 USER jira:
RUN su jira
这也会返回第一个错误。然后我创建了一个用户 jira,安装了 sudo,允许组 wheel 中的所有用户执行任何无密码的命令,并将 jira 添加到组 wheel 并将密码 jira 分配给用户 jira。我将这些更改提交到我的镜像并再次尝试:
FROM rusk85/archbase
CMD /bin/bash
USER jira # fixed: was docker before
RUN yaourt -Sy --noconfirm atlassian-jira
这再次要求输入初始 sudo 密码。我在人类已知的所有变体中搜索了这个问题,也查看了多个 Dockerfiles,但我的搜索没有返回任何可用的结果,我查看的所有 Dockerfiles 都让我完全困惑。我希望有一个非常简单的例子来说明如何解决这个问题。如果这是一个非常微不足道的问题,我很抱歉,但我刚刚开始使用 Docker,到目前为止我对 arch 的了解似乎还不够。
答案1
首先,不要使用 YAOURT。
然后,让我引用官方的 Arch编译维基页面:
makepkg
以 root 身份运行不允许。除了PKGBUILD
可能包含任意命令之外,以 root 身份构建通常被认为是不安全的。无法访问普通用户帐户的用户应makepkg
以没人用户。
所以回到你的问题,你不应该尝试做你想做的事情。
但如果你仍然想:
- 您可以安装 yaourt,但只能安装为非根用户。
或者
- 你可以试试(风险自负) 艾伦麦克雷的解决方案被认为很好地解释了旧
makepkg --asroot
命令的替换。