debian – APT如何决定查看哪些“二进制”目录?

使用Raspberry Pi,我试图通过添加puppetlabs存储库来使用比提供的2.7更新版本的puppet,该存储库没有’binary-armhf’文件夹. (对于非Raspbian用户 – Raspbian是基于wheezy的.)此存储库的结构如下:

> dists

>耐寒

> ……

> ……
> wheezy

>依赖

> ……

>主要

>二进制全部
> binary-amd64
> binary-i386
>来源

我的期望是APT应该在看到没有main / binary-armhf目录(在wheezy / Release文件中)时,回退到main / binary-all;相反,apt-get update会输出错误

W: Failed to fetch http://apt.puppetlabs.com/dists/wheezy/Release  Unable to find expected entry 'main/binary-armhf/Packages' in Release file (Wrong sources.list entry or malformed file)

和apt-cache madison puppet没有显示任何可从apt.puppetlabs.com安装的二进制包(仅限源代码).

通过检查从默认存储库正确安装的其他软件包,apt在这个平台上似乎接受’all’作为恰好列在binary-armhf / Packages文件中的软件包的体系结构;但是,在寻找要下载的包(.gz)时,似乎不接受’all’作为架构.

对于实际问题:

>有没有客户真正认为他们自己的架构是“全部”?
>除了main / binary- $native_arch之外,有没有办法配置APT来检查main / binary-all?编辑:有(在sources.list中使用deb [arch = all]) – 但不清楚这是否总是安全的. (例如,如果你说[arch = i386],它是否会让你的系统认为它可以安装i386软件包,还是只需要获取软件包列表?).
>如果上述答案都不是肯定的,那么没有客户端实际获取的主/二进制全部版本的预期效用是什么?

最佳答案 Apt仅打印警告(W :),而不是错误. Release文件仅包含其他索引文件的校验和. binary-all用于独立于体系结构的包,例如用perl或python编写的包.

我想Packages文件应该正确指定在哪里查找二进制包.我已经破解了它,并且puppet包似乎在binary-all / Packages文件中指定.但主要问题可能是aptitude不允许您使用来自不知道您的架构的存储库中的任何包.也许在建筑物中提到arm-hf的空二进制文件/ arm-hf / Packages文件:i386 amd64都在Release文件中就足够了.在此之前,您必须手动下载.deb文件并使用dpkg -i安装它们.

现在你的3个问题:我会说默认情况下没有客户端具有“全部”架构. APT还会检查“binary-all”目录,但如果没有知道其架构的存储库,它可能无法生存.说到这一点,[arch = all]的解决方法应该可行,但除了“all”之外我不会尝试其他任何东西.

这是一个关于debian存储库Debian Repository Format格式的文档.

点赞