我安装了一个容易出现错误的软件包 (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 的开发人员发送错误报告和补丁,随着时间的推移,该错误可能会在存储库中得到修复。然后您可以再次从存储库安装该版本。也就是说,在存储库更新之前可能需要一些耐心。