当从 Dockerfile 调用 docker build 时,如何使用 yaourt 安装 arch linux 包?

当从 Dockerfile 调用 docker build 时,如何使用 yaourt 安装 arch linux 包?

我正在尝试使用官方的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命令的替换。

相关内容