4

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

  • 分布
    • 耐寒
      • ...
    • ...
    • 喘不过气来
      • 依赖关系
        • ...
      • 主要的
        • 二进制
        • 二进制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 似乎接受“全部”作为恰好在binary-armhf/Packages文件中列出的软件包的架构;但是,在寻找Packages(.gz)下载时,它似乎不接受“全部”作为架构。

对于实际问题:

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

1 回答 1

2

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

我想Packages文件应该正确地指定在哪里寻找二进制包。我已经破解了它,并且puppet包似乎在binary-all/Packages文件中指定。但主要问题可能是 aptitude 不允许您使用存储库中不了解您的架构的任何包。也许空文件+在文件中binary/arm-hf/Packages提及就足够了。在此之前,您必须手动下载文件并使用.arm-hfArchitectures: i386 amd64 allRelease.debdpkg -i

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

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

于 2013-03-07T14:14:15.153 回答