如何防止 apt-get 升级使用 apt pinning 从源代码构建的软件包?

如何防止 apt-get 升级使用 apt pinning 从源代码构建的软件包?

我安装了一个容易出现错误的软件包 (xcp-xapi)。修复方法非常简单(代码中只有几行),所以我所做的如下:

apt-get source xcp-xapi

然后我找到源文件来应用修复,然后再次运行

apt-get -b source xcp-xapi

这将生成一些 .deb 文件,我使用它们进行安装

dpkg -i *.deb

现在的问题是,每次我尝试运行 apt-get upgrade 时,apt 都会尝试从存储库中获取软件包。我猜这个问题可以通过固定来解决,但我找不到合适的配置来将我自己编译的软件包置于高优先级。

所以问题是我如何配置固定,以使以下已安装的软件包的优先级高于存储库中任何现有的软件包?

# apt-cache policy xcp-networkd xcp-v6d xcp-xapi xcp-xapi-debug
xcp-networkd:
  Installed: 1.3.2-5ubuntu0.1
  Candidate: 1.3.2-5ubuntu0.1
  Version table:
     1.3.2-5ubuntu0.1 0
        500 http://ftp.uninett.no/ubuntu/ precise-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
 *** 1.3.2-5ubuntu0.1 0
        100 /var/lib/dpkg/status
     1.3.2-5 0
        500 http://ftp.uninett.no/ubuntu/ precise/universe amd64 Packages
xcp-v6d:
  Installed: 1.3.2-5ubuntu0.1
  Candidate: 1.3.2-5ubuntu0.1
  Version table:
     1.3.2-5ubuntu0.1 0
        500 http://ftp.uninett.no/ubuntu/ precise-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
 *** 1.3.2-5ubuntu0.1 0
        100 /var/lib/dpkg/status
     1.3.2-5 0
        500 http://ftp.uninett.no/ubuntu/ precise/universe amd64 Packages
xcp-xapi:
  Installed: 1.3.2-5ubuntu0.1
  Candidate: 1.3.2-5ubuntu0.1
  Version table:
     1.3.2-5ubuntu0.1 0
        500 http://ftp.uninett.no/ubuntu/ precise-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
 *** 1.3.2-5ubuntu0.1 0
        100 /var/lib/dpkg/status
     1.3.2-5 0
        500 http://ftp.uninett.no/ubuntu/ precise/universe amd64 Packages
xcp-xapi-debug:
  Installed: 1.3.2-5ubuntu0.1
  Candidate: 1.3.2-5ubuntu0.1
  Version table:
     1.3.2-5ubuntu0.1 0
        500 http://ftp.uninett.no/ubuntu/ precise-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
 *** 1.3.2-5ubuntu0.1 0
        100 /var/lib/dpkg/status
     1.3.2-5 0
        500 http://ftp.uninett.no/ubuntu/ precise/universe amd64 Packages

答案1

我不知道这是否是正确的解决方案,但尝试了不同的固定配置后,我最终使它像这样工作:

创建文件 /etc/apt/preferences.d/xcp-xapi,内容如下:

Package: xcp-networkd
Pin: release n=precise
Pin-Priority: -1

Package: xcp-v6d
Pin: release n=precise
Pin-Priority: -1

Package: xcp-xapi
Pin: release n=precise
Pin-Priority: -1

Package: xcp-xapi-debug
Pin: release n=precise
Pin-Priority: -1

据我所知,给特定存储库中的特定包赋予负优先级意味着不必理会这个包,从而保持当前版本安装。如果有人能进一步解释或提供“更正确”的解决方案,我将不胜感激。谢谢!

答案2

一种方法可能是向 xcp-xapi 的开发人员发送错误报告和补丁,随着时间的推移,该错误可能会在存储库中得到修复。然后您可以再次从存储库安装该版本。也就是说,在存储库更新之前可能需要一些耐心。

相关内容