reprepro FilterList 忽略包含 :i386 的包

reprepro FilterList 忽略包含 :i386 的包

我正在使用它reprepro来创建部分本地 Debian 镜像。我的conf/updates文件如下所示:

Name: update-wheezy
Method: http://ftp.tu-graz.ac.at/mirror/debian
Suite: wheezy
Components: main contrib non-free
Architectures: i386
FilterList: purge mirror.packages

FilterList指向mirror.packages包含所有当前安装的软件包的文件。我使用以下命令创建此文件dpkg

dpkg --get-selections > conf/mirror.packages

到目前为止一切顺利。它运行良好。但后来我注意到我的本地存储库中缺少一些包。 的输出dpkg --get-selections包含一些以 结尾的包名称行:i386。示例:

libxxf86dga1:i386                               install
libxxf86vm1:i386                                install
lighttpd                                        install

正是这些i386-packages 缺失了。我通过删除后缀解决了这个问题:

dpkg --get-selections | sed 's/:i386//g' > conf/mirror.packages

现在我的问题是:

  1. 这是 reprepro 中的错误吗?还是我做错了什么?手册页指出FilterList采用的输出格式dpkg --get-selections
  2. 有没有什么方法可以dpkg抑制这种架构?
  3. 为什么有些软件包有:i386后缀,但大多数没有?
  4. 为什么架构是软件包名称的一部分?同一系统上可能存在来自不同架构的同一软件包吗?

答案1

:i386 不是软件包名称的一部分,而是软件包所针对的体系结构的指示。这是因为 Debian 引入了对从多个体系结构(“多体系结构”)安装软件包的支持。

https://wiki.debian.org/Multiarch了解更多信息。

我不确定是什么决定了某个特定软件包的架构是否显示。起初我以为只有当软件包来自其他架构时才会显示,但从 nharrer 的评论来看,我显然搞错了。查看 nharrer 的列表并思考我看到的其他上下文:<architecture>,我认为它可能显示所有“multi-arch:same”软件包

我怀疑 reprepro 中的过滤列表功能早于 multiarch,不理解 :i386 的含义,因此将其视为包名称的一部分。

相关内容