因为它似乎与显示格式转义生成的字符串不同%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
搜索词的实际表现如何呢?它与什么相匹配?