我问这个问题是因为我自己花了太多时间来解决这个问题,文档缺少几个重要的注释,而且我还没有找到与此真正相关的任何其他问题:
如何为多个架构确定特定软件包版本的优先级?特别是,我有许多不同的软件包,我想为多个架构下载这些软件包,并且我想对版本进行优先级排序,这样如果没有明确提供它们,apt 将尝试获取符合我的任意要求的版本(在我的例子中,当前的 git 分支名称)并回退到develop
分支版本。
例如。我想下载和架构my-package
的软件包,并且我想在回退到包含.i386
amd64
my-git-branch-name
develop
答案1
官方文档是这里。
为了支持多种架构,所有包都被固定必须指定其架构,并且每个架构必须有一个条目。未指定架构的包名称的固定只会影响默认(平台)架构:
Package: my-package Pin: version /your regex here/ Pin-Priority: 1001
这些条目对空格敏感,但如果有空格则不会报告任何错误。以下固定将被默默忽略:
Package: my-package:amd64 Pin: version /your regex here/ Pin-Priority: 1001
apt update
必须叫做后更新首选项文件以使其受到尊重并且后添加额外的架构使用(例如)dpkg --add-architecture i386
以下摘录
/etc/apt/preferences
解决了上述问题:Package: my-package:amd64 Pin: version /-my-git-branch-name-/ Pin-Priority: 1001 Package: my-package:i386 Pin: version /-my-git-branch-name-/ Pin-Priority: 1001 Package: my-package:amd64 Pin: version /-develop-/ Pin-Priority: 900 Package: my-package:i386 Pin: version /-develop-/ Pin-Priority: 900