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

时间:2013-03-05 19:00:35

标签: debian raspberry-pi apt raspbian

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

  • dists中
    • 耐寒
      • ...
    • ...
    • 喘鸣
      • 依赖关系
        • ...
        • 二进制所有
        • 二进制AMD64
        • 二进制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文件中的软件包的体系结构;但是,在寻找Packages(.gz)下载时,似乎不接受'all'作为架构。

对实际问题:

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

1 个答案:

答案 0 :(得分:2)

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

我认为Packages文件应正确指定查找二进制包的位置。我已经查了它,puppet包似乎在binary-all/Packages文件中指定。但主要问题可能是aptitude不允许您使用来自不知道您的架构的存储库中的任何包。在binary/arm-hf/Packages文件的arm-hf中提空Architectures: i386 amd64 all文件+提及Release就足够了。在此之前,您必须手动下载.deb个文件并使用dpkg -i安装它们。

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

这是一个关于debian知识库Debian Repository Format格式的文档。