Dae*_*yth 5 10.04 packaging pbuilder
我正在尝试为 Lucid 创建一个构建环境,但调用cowbuilder --create --distribution lucid失败并显示以下消息:
Get:1 http://us-east-1.ec2.archive.ubuntu.com lucid Release.gpg [189B]
Hit http://us-east-1.ec2.archive.ubuntu.com lucid Release
Hit http://us-east-1.ec2.archive.ubuntu.com lucid/main Packages
Fetched 189B in 0s (2376B/s)
Reading package lists...
I: Obtaining the cached apt archive contents
Reading package lists...
Building dependency tree...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists...
Building dependency tree...
apt is already the newest version.
Package cowdancer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package cowdancer has no installation candidate
I: unmounting dev/pts filesystem
I: unmounting proc filesystem
pbuilder create failed
forking: rm -rf /opt/cowbuilder
Run Code Online (Sandbox Code Playgroud)
尝试将以下内容添加到您的~/.pbuilderrc:
COMPONENTS="main universe multiverse restricted"
Run Code Online (Sandbox Code Playgroud)
或者,按照 SunSparc 的建议,输入如下命令:
COMPONENTS="main universe multiverse restricted" cowbuilder --create --distribution lucid
Run Code Online (Sandbox Code Playgroud)
cowbuilder是 lucid 的宇宙组件。我在问题中包含的输出中没有看到尝试访问 Universe 的创建操作。
该文件~/.pbuilderrc可以设置为pbuilder也用于设置许多选项cowbuilder。
关键错误消息(如下)让我感到困惑,直到我完全了解cowbuilder(和底层pbuilder工具)正在尝试做什么。
Package cowdancer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
Run Code Online (Sandbox Code Playgroud)
这是一个令人困惑的消息,因为它只在执行时出现cowbuilder --create。换句话说,当我调用这个命令时,它抱怨缺少一个我已经安装的包。奇怪的。
这是缺失的链接:cowbuilder--并且通过扩展,--pbuilder正在尝试创建一个干净、最小的 chroot 环境,在该环境中没有安装额外的软件包。即使cowbuilder已经安装在chroot之外,它似乎也想安装在chroot内。chroot 内部和外部是完全不同的世界。在 chroot(常规环境)之外,您的/etc/apt/sources.list文件为王。但在内部,它是一套不同的规则。默认pbuilder环境仅包含基本/全新安装所需的最关键和最少的存储库。
接受的答案谈到添加“COMPONENTS”参数并指定一些额外的存储库。它对我不起作用。我尝试将 COMPONENTS 值添加到/etc/pbuilderrc文件,我的本地.pbuilderrc文件,并在命令行上将其作为环境变量执行。没运气。我确实找到了一些提到 COMPONENTS 参数不支持cowbuilder.
最后,我偶然发现了一篇博客文章是谈到加入一个名为变量OTHERMIRROR的/etc/pbuilderrc文件。对我来说,我只是添加了以下内容:
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu saucy main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-backports main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-security main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-updates main restricted universe multiverse"
Run Code Online (Sandbox Code Playgroud)
[请注意,您可以更新/更改saucy你想什么(例如trusty,raring,precise,甚至wheezy和sid只要你有适当的Debian镜像等)。
然后,我只需从命令行运行以下命令,一切都已成功创建,我能够继续:
sudo cowbuilder --create # defaults to using current distribution
Run Code Online (Sandbox Code Playgroud)
显然,您可以使用“--distribution”命令行参数更改分布。建立初始环境需要几分钟时间,但是一旦创建,您就可以使用 轻松更新包等cowbuilder。
在Debian的网站cowbuilder页有关创建Ubuntu的具体cowbuilder会谈。它提到cowdancer已移至universe存储库。他们参考运行以下命令在 Ubuntu 上构建一个 cowbuilder 环境:
DIST=trusty sudo cowbuilder --create --distribution trusty --components "main universe"
该--components="main universe"标志是确保创建过程可以访问所有必要存储库的关键部分。