我在Docker-Container中使用Docker和Arch Linux。 介绍 makepkg-4.2.0 我的安装命令与yaourt一样被破坏,如下所述:https://github.com/archlinuxfr/yaourt/issues/67
问题是,yaourt应该以非root用户身份运行。但是,由于yaourt还希望在每个Case中安装Package,在构建它之后,需要root用户或具有Permission来安装Packages的用户。
所以我的问题是如何解决这个问题?我想在Docker中安装AUR中的Package,因为还没有正式的Package。
到目前为止,我使用的是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
对于遍布两个Dockerfiles的许多offtopic Lines没有污染,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"]
答案 0 :(得分:2)
如果找到一个让yaourt只下载Info如何构建Package的解决方案,那么使用非root用户调用makepkg本身,然后使用root用户和pacman安装build Package。 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
使用一些变量,可以实现进一步的增强,但在原理上这是有效的。