我已经添加KeePassXC 的官方 PPA并且 apt 知道最新版本,但是它不会安装它:
$ apt list -a keepassxc
Listing... Done
keepassxc/bionic,now 2.6.1-1ppa1~bionic1 amd64
keepassxc/bionic 2.5.3-1ppa1~bionic1 amd64 [installed]
keepassxc/bionic 2.3.1+dfsg.1-1 amd64
手动选择版本 2.6.1 是可行的,但 apt 稍后会将其降级到 2.5.3。
为什么会这样?我怎样才能让它使用最新版本?
答案1
可以通过执行以下命令来诊断该问题apt-cache policy keepassxc
:
keepassxc:
Installed: 2.5.3-1ppa1~bionic1
Candidate: 2.5.3-1ppa1~bionic1
Version table:
2.6.1-1ppa1~bionic1 500
500 http://ppa.launchpad.net/phoerious/keepassxc/ubuntu bionic/main amd64 Packages
*** 2.5.3-1ppa1~bionic1 1001
1001 http://ppa.launchpad.net/system76/pop/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
2.3.1+dfsg.1-1 500
500 http://pl.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
2.5.3 软件包具有非标准优先级 1001,高于其他软件包使用的默认值 500。
为什么会这样?
2.3.1 软件包来自 Ubuntu 存储库。2.5.3
由 Pop!_OS 存储库提供。2.6.1
是官方 KeePassXC PPA。
Pop!_OS 基于 Ubuntu,但提供了一些软件包的自己的修改版本。这是通过在 apt 中赋予其存储库更高的优先级来实现的。Apt 将首先查看软件包优先级,如果有多个优先级较高的软件包,则只考虑该版本。否则,将安装优先级最高的软件包,无论版本如何。
Pop 的keepassxc
软件包从其存储库继承了优先级 1001。它高于500
Ubuntu 和 KeePassXC PPA 软件包的默认优先级,因此尽管 2.5.3 不是最新版本,但仍会安装。
通过将 KeePassXC 的 PPA 优先级设置为高于 1001 可以修复此问题。/etc/apt/preferences.d/keepassxc-official-ppa
以 root 身份创建文件,内容如下:
Package: *
Pin: release o=LP-PPA-phoerious-keepassxc
Pin-Priority: 1100
然后sudo apt update
和sudo apt upgrade keepassxc
。应该安装最新版本并apt-cache policy keepassxc
反映更改:
keepassxc:
Installed: 2.6.1-1ppa1~bionic1
Candidate: 2.6.1-1ppa1~bionic1
Version table:
*** 2.6.1-1ppa1~bionic1 1100
1100 http://ppa.launchpad.net/phoerious/keepassxc/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
2.5.3-1ppa1~bionic1 1001
1001 http://ppa.launchpad.net/system76/pop/ubuntu bionic/main amd64 Packages
2.3.1+dfsg.1-1 500
500 http://pl.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
(LP-PPA-phoerious-keepassxc
首选项文件中的字符串来自apt-cache policy
输出。)