因为它似乎与显示格式转义生成的字符串不同%O
,也与sources.list.d
.
就我而言,我正在寻找从非 Ubuntu 源安装的软件包,我遇到的问题可以在这个例子中看到:
$ aptitude search --display-format '%v %p %O#' '?exact-name(syncthing)'
1.23.6 syncthing Syncthing:syncthing [amd64]
$ aptitude search --display-format '%v %p %O#' '?exact-name(syncthing) !?origin(ubuntu)'
$ aptitude search --display-format '%v %p %O#' '?exact-name(syncthing) ?origin(ubuntu)'
1.23.6 syncthing Syncthing:syncthing [amd64]
$
当?origin
根本不包含该术语时,SyncThing 显示的来源不包含“ubuntu”,因此我希望在添加时保留它(即“不得来自与模式“ubuntu”匹配的来源” !?origin(ubuntu)
) 。相反,它会消失,除非我更改术语以要求它确实来自与“ubuntu”匹配的来源!
查看来源列表也没有什么启发:
$ cat /etc/apt/sources.list.d/syncthing.list
deb [signed-by=/etc/apt/keyrings/syncthing-release-key.gpg] https://apt.syncthing.net/ syncthing stable
然而,这显然不仅仅是“所有来源都匹配‘ubuntu’”的情况——如果我查看 VS Code 而不是 SyncThing,它的行为符合预期:
$ aptitude search --display-format '%v %p %O#' '?exact-name(code)'
1.81.0-1690980 code code stable:stable [amd64]
$ aptitude search --display-format '%v %p %O#' '?exact-name(code) !?origin(ubuntu)'
1.81.0-1690980 code code stable:stable [amd64]
$ aptitude search --display-format '%v %p %O#' '?exact-name(code) ?origin(ubuntu)'
$
那么?origin
搜索词的实际表现如何呢?它与什么相匹配?
搜索
aptitude
词与存储库文件中的值?origin
匹配。Origin
Release
例如,在 22.04 的非常基本的安装中, 的输出
apt-cache policy
列出了以下存储库。在此输出中,搜索词?origin
与值进行比较o=
,该值适用Ubuntu
于本计算机上的所有存储库。浏览存储库的 Release 文件会显示相应的值。例如http://us.archive.ubuntu.com/ubuntu/dists/jammy/Release包含
您可以使用类似的命令从中
aptitude
搜索可用的软件包Origin
您可以搜索“我从非 Ubuntu 源安装的软件包”。可以添加搜索
?origin(.*)
词以避免可能没有任何origin
.作为一个更复杂的示例,我最喜欢的命令之一是查找具有官方
Ubuntu
存储库(包括UbuntuESM
)中可用更新的所有软件包。起源名称特别令人困惑,因为
?origin
显示格式值不匹配%O
,如原始问题中所述。apt_preferences
允许您指定一个origin
,但与origin
存储库主机名匹配。例如archive.ubuntu.com
。unattended-upgrades
其配置Allowed-Origins
实际上是存储库值的组合。同步事物
如果我添加
syncthing
存储库,则该syncthing
包同时具有Ubuntu
和Syncthing
起源。的输出
apt-cache policy
显示有关存储库的以下信息。的输出
apt-cache policy syncthing
显示了 Syncthing 和 Ubuntu 存储库中可用的软件包。像 aptitude 搜索一样
?and(?origin(Ubuntu), ?exact-name(syncthing))
会匹配,syncthing
因为有一个匹配的软件包版本。我尝试过的一些测试
您可以尝试使用搜索词,例如
?narrow
限制特定版本的软件包。这应该显示已安装的软件包,其中安装的版本的 Origin 不是Ubuntu
.笔记
我希望我有一个可以参考的来源。这只是我过去通过测试得出的信息。