不同版本和架构的 apt-preferences 中的优先级固定

不同版本和架构的 apt-preferences 中的优先级固定

我问这个问题是因为我自己花了太多时间来解决这个问题,文档缺少几个重要的注释,而且我还没有找到与此真正相关的任何其他问题:

如何为多个架构确定特定软件包版本的优先级?特别是,我有许多不同的软件包,我想为多个架构下载这些软件包,并且我想对版本进行优先级排序,这样如果没有明确提供它们,apt 将尝试获取符合我的任意要求的版本(在我的例子中,当前的 git 分支名称)并回退到develop分支版本。

例如。我想下载和架构my-package的软件包,并且我想在回退到包含.i386amd64my-git-branch-namedevelop

答案1

官方文档是这里

  1. 为了支持多种架构,所有包都被固定必须指定其架构,并且每个架构必须有一个条目。未指定架构的包名称的固定只会影响默认(平台)架构:

    Package: my-package
    Pin: version /your regex here/
    Pin-Priority: 1001
    
  2. 这些条目对空格敏感,但如果有空格则不会报告任何错误。以下固定将被默默忽略:

    Package: my-package:amd64
        Pin: version /your regex here/
        Pin-Priority: 1001
    
  3. 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
    

相关内容