使用yaourt和> makepkg-4.2.0自动构build并安装AUR for Arch Linux中的软件包

我在Docker-Container中使用Docker和Arch Linux。 介绍makepkg-4.2.0我的安装命令与yaourt被打破如下所述: https : //github.com/archlinuxfr/yaourt/issues/67

问题是,yaourt应该以非root用户身份运行。 但是,由于yaourt也希望在每种情况下都安装这个软件包,所以在构build它之后,需要root用户或者拥有安装软件包权限的用户。

所以我的问题是如何解决这个问题? 我想在Docker里面安装一个来自AUR的Package,因为还没有官方的Package。

到目前为止,我正在使用Arch Linux,pacman和yaourt。

所以命令,

RUN yaourt -S --noconfirm aur/taskd 

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

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

 makepkg: invalid option '--asroot' 

如果我将用户更改为非root用户,并尝试安装包,我会在我的自动构build中得到一个命令提示符,询问实际安装包的根密码。

 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行,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"] 

如果find一个解决scheme,让yaourt只下载Info如何构buildPackage,然后使用非root用户调用makepkg本身,然后使用root用户和pacman安装构buildPackage。 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 

对于一些variables,可以实现进一步的增强,但是在原理上这是有效的。