Answers:
aptitude
使用apt-cache showpkg
,其中包括的清单,您可以达到预期的效果而不会(目前似乎不受欢迎)Reverse Provides
。通过一个小的sed
脚本来运行它会摆脱其他事情:
apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'
可以通过以下示例实现一个更漂亮(但输入时间更长)的示例(仅列出软件包名称,而不列出版本,并按字母顺序对它们进行排序)awk
:
apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'
...这可以通过管道传递uniq
以删除重复项(由于存在多个版本的软件包是反向提供的,因此可能存在)。请注意,使用uniq
第一个版本将无济于事,因为uniq
仅当重复项位于相邻行且该sed
版本未对输出进行排序时,才会删除重复项。
最后,可以定义一个函数以便于使用,如下所示:
provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}
.bashrc
将其插入(例如)中,以便在shell加载时将其加载,并且有可能运行provides <package>
以获取包的反向提供。
sort -u
。不知道那个。我不知道为什么它没有捡起来doom-wad-editor
...?这一点特别有趣,因为apt-cache showpkg
它表明它完全没有依赖关系。
aptitude
搜索将匹配Provides:
字段中的子字符串(因此选择deutex
),其中该apt-cache showpkg
方法使用确切的包名称。因此,两者大概都有自己的位置。
<package>
是这里是一个虚拟软件包。像editor
。
Provides:
在存储库中至少存在一行。apt-cache search
然后,与相同,没有输出时的正确结果是缺少输出-这是这些选项所提供的。同一软件包可以有具体的和虚拟的版本,我想我们可以对它们进行增强,以显示具体版本的存在,仅此而已。
Aptitude也提供此功能。因此,这样的命令将显示提供编辑器的所有软件包。
aptitude search '~Peditor'
您甚至可以添加其他约束。就像只显示已安装的编辑器一样。
aptitude search '~i~Peditor'
$ dpkg-query -W -f='Package: ${Package}\nProvides: ${Provides}\n' \
| grep -B 1 -E "^Provides: .*editor"
Package: nano
Provides: editor
--
Package: vim-gnome
Provides: editor, gvim, vim, vim-perl, vim-python, vim-ruby, vim-tcl
--
Package: vim-tiny
Provides: editor
$
直接读取数据库:
#!/usr/bin/env python3
import sys
import shlex
def whichPkgsProvide(filter,l):
for pkg in l:
dic = {}
pairs = [x.split(": ") for x in pkg.split("\n")]
for j in pairs:
try:
dic[j[0]] = j[1]
except IndexError:
pass
try:
if filter in dic["Provides"]:
yield dic["Package"]
except KeyError:
pass
if __name__ == "__main__":
l = sys.stdin.read().split("\n\n")
print(list(whichPkgsProvide(sys.argv[1],l)))
用法:
$ python3 whichPkgsProvide.py editor < /var/lib/dpkg/available
['vim-gnome', 'nano', 'vim-tiny']
$
根据您的示例。我可以列出editor
按用途提供的包裹apropos
hvn@lappy: ~ () $ apropos editor
atobm (1) - bitmap editor and converter utilities for the X W...
bitmap (1) - bitmap editor and converter utilities for the X W...
bmtoa (1) - bitmap editor and converter utilities for the X W...
ed (1) - text editor
editor (1) - Vi IMproved, a programmers text editor
editres (1) - a dynamic resource editor for X Toolkit applications
ex (1) - Vi IMproved, a programmers text editor
gedit (1) - text editor for the GNOME Desktop
gnome-text-editor (1) - text editor for the GNOME Desktop
gview (1) - Vi IMproved, a programmers text editor
gvim (1) - Vi IMproved, a programmers text editor
i3-sensible-editor (1) - launches $EDITOR with fallbacks
nano (1) - Nano's ANOther editor, an enhanced free Pico clone
notepad (1) - Wine text editor
pico (1) - Nano's ANOther editor, an enhanced free Pico clone
psed (1) - a stream editor
ptked (1p) - an editor in Perl/Tk
red (1) - text editor
regedit (1) - Wine registry editor
rgview (1) - Vi IMproved, a programmers text editor
rgvim (1) - Vi IMproved, a programmers text editor
rnano (1) - Restricted mode for Nano's ANOther editor, an enh...
rview (1) - Vi IMproved, a programmers text editor
rvim (1) - Vi IMproved, a programmers text editor
s2p (1) - a stream editor
sdlBasic (1) - sdlBasic program editor
sed (1) - stream editor for filtering and transforming text
select-editor (1) - select your default sensible-editor from all inst...
sensible-editor (1) - sensible editing, paging, and web browsing
software-properties-gtk (1) - Software Sources List editor
Tk::ColorEditor (3pm) - a general purpose Tk widget Color Editor
vi (1) - Vi IMproved, a programmers text editor
view (1) - Vi IMproved, a programmers text editor
vim (1) - Vi IMproved, a programmers text editor
winecfg (1) - Wine Configuration Editor
xedit (1) - simple text editor for X
zshzle (1) - zsh command line editor
apropos
搜索手册页,因此将仅列出已安装的命令。此外,OP还需要一个软件包列表。
sort -u
将删除重复项,因此uniq
不需要调用。但是,不管怎样,不错的解决方案,它都快得多。aptitude
也会匹配doom-wad-editor
,因此它们并不完全相同。