gpt4 book ai didi

docker - 使用 yaourt 和 >makepkg-4.2.0 在 Docker 中自动构建和安装来自 AUR for Arch Linux 的软件包

转载 作者:行者123 更新时间:2023-12-02 18:24:53 26 4
gpt4 key购买 nike

我在 Docker-Container 中使用 Docker 和 Arch Linux。引入 ma​​kepkg-4.2.0 我的 yaourt 安装命令被破坏,如下所述:https://github.com/archlinuxfr/yaourt/issues/67

问题是,yaourt 应该以非根用户身份运行。但是由于 yaourt 还希望在每个案例中安装包,因此在构建它之后,需要 root 用户或具有安装包权限的用户。

所以我的问题是如何解决这个问题?我想在 Docker 中安装来自 AUR 的包,因为官方包还不存在。

直到现在我一直在使用 Arch Linux、pacman 和 yaourt。

所以命令,

RUN yaourt -S --noconfirm aur/taskd

安装 taskd,在 makepkg-4.2.0 之前工作:

使用新的 makepkg 版本构建 Docker 失败,并出现来自 yaourt 的以下错误:

makepkg: invalid option '--asroot'

如果我将用户更改为非 root 用户并尝试安装该软件包,我会在我的自动构建中收到命令提示,要求输入用于实际安装该软件包的 Root 密码。

Password: su: Authentication information cannot be recovered
Password: su: Authentication information cannot be recovered
Password: su: Authentication information cannot be recovered
The command [/bin/sh -c yaourt -S --noconfirm aur/taskd] returned a non-zero code: 1

在不污染分布在两个 Dockerfile 上的许多离题行的情况下,Dockerfile 的有趣部分如下所示:

FROM kaot/arch_linux_base:latest
MAINTAINER Kaot
RUN useradd --no-create-home --shell=/bin/false yaourt && usermod -L yaourt
RUN yaourt -S --noconfirm aur/taskd
ENTRYPOINT ["/controlcenter/controlcenter.sh"]
CMD ["cc:start"]

最佳答案

如果找到一个让 yaourt 只下载如何构建包的信息的解决方案,那么调用 makepkg 本身,两者都使用非 root 用户,然后使用 root 用户和 pacman 安装构建包。Dockerfile 的部分看起来像这样

RUN mkdir -p /tmp/Package/ && chown yaourt /tmp/Package
USER yaourt
RUN cd /tmp/Package && pwd && ls -al && yaourt --getpkgbuild aur/taskd && cd taskd && makepkg --pkg taskd
USER root
RUN pacman -U --noconfirm /tmp/Package/taskd/taskd-1.1.0-1-x86_64.pkg.tar.xz

有了一些变量,可以实现进一步的增强,但原则上这是可行的。

关于docker - 使用 yaourt 和 >makepkg-4.2.0 在 Docker 中自动构建和安装来自 AUR for Arch Linux 的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com