首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用yaourt和>makepkg-4.2.0自动构建和安装Arch Linux内置的软件包

用yaourt和>makepkg-4.2.0自动构建和安装Arch Linux内置的软件包
EN

Stack Overflow用户
提问于 2015-06-05 13:21:10
回答 1查看 2.8K关注 0票数 3

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

问题是,yaourt应该作为非根用户运行。但是yaourt也希望在每一种情况下都安装这个包,在它构建它之后,需要root用户或者一个拥有安装软件包权限的用户。

所以我的问题是如何解决这个问题?我想安装一个软件包从8月在码头,因为还没有正式的软件包存在。

直到现在,我还在使用Arch、pacman和yaourt。

所以司令部

代码语言:javascript
复制
RUN yaourt -S --noconfirm aur/taskd

它安装taskd,在makepkg-4.2.0之前完成:

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

代码语言:javascript
复制
makepkg: invalid option '--asroot'

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

代码语言:javascript
复制
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中有趣的部分如下所示:

代码语言:javascript
复制
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"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 14:17:27

如果找到一个只允许yaourt下载Info如何构建包的解决方案,那么就调用makepkg本身,与非根用户一起调用,然后与root用户和pacman一起安装构建包。Dockerfile的部分如下所示

代码语言:javascript
复制
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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30667644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档