如何搜索提供虚拟包的包?

如何搜索提供虚拟包的包?

例如,我想在Ubuntu 12.04的“主”存储库中搜索提供“x-terminal-emulator”的软件包。 一种方法是解析包索引:

curl http://archive.ubuntu.com/ubuntu/dists/precise/main/binary-amd64/Packages.gz | zcat | grep -B12 '^Provides: x-terminal-emulator' | grep ^Package: 

这给了我以下结果:

 Package: gnome-terminal Package: konsole Package: xterm 

有更好(更清洁)的方法吗? 是否可以使用任何官方工具(apt-get / apt-cache / etc)来完成?

假设您知道x-terminal-emulator是一个虚拟包,您可以尝试

 # absolutely blunt method apt-provides() { apt-cache show '.*' | sed -n '/^Package: \(.*\)$/ {s//\1/;h}; /^Provides:.*'"$1"'/ {x;p}' | sort | uniq } # better method apt-provides() { apt-cache show $(apt-cache search "$1" | awk '{ print $1 }' | tr '\n' ' ') | sed -n '/^Package: \(.*\)$/ {s//\1/;h}; /^Provides:.*'"$1"'/ {x;p}' } 

例如,

 $ apt-provides x-terminal-emulator gnome-terminal xterm aterm aterm-ml eterm evilvte guake konsole kterm lxterminal mlterm mlterm-tiny mrxvt mrxvt-cjk mrxvt-mini pterm roxterm-gtk2 roxterm-gtk3 rxvt rxvt-beta rxvt-ml rxvt-unicode rxvt-unicode-256color rxvt-unicode-lite sakura terminal.app terminator termit vala-terminal xfce4-terminal xiterm+thai xvt 

编辑 :包含一个直接的错误检查方法,使sed表达更好

使用aptitude 。 它有一个非常丰富的搜索语言 。 要搜索“提供”字段,请使用~P术语:

 $ aptitude search '~Px-terminal-emulator' p aterm - transitional dummy package for rxvt-unicod p aterm-ml - transitional dummy package for rxvt-unicod p eterm - Enlightened Terminal Emulator p evilvte - lightweight terminal emulator based on VTE p gnome-terminal - GNOME terminal emulator application p guake - Drop-down terminal for GNOME Desktop Envir p konsole - X terminal emulator p kterm - Multi-lingual terminal emulator for X p lilyterm - Light and eazy-to-use terminal emulator fo i A lxterminal - LXDE terminal emulator p mate-terminal - MATE terminal emulator application p mlterm - MultiLingual TERMinal p mlterm-tiny - MultiLingual TERMinal, tiny version p mrxvt - lightweight multi-tabbed X terminal emulat p mrxvt-cjk - lightweight multi-tabbed X terminal emulat p mrxvt-mini - lightweight multi-tabbed X terminal emulat p pterm - PuTTY terminal emulator p qterminal - Lightweight Qt terminal emulator p roxterm-gtk2 - Multi-tabbed GTK+/VTE terminal emulator - p roxterm-gtk3 - Multi-tabbed GTK+/VTE terminal emulator - i rxvt - VT102 terminal emulator for the X Window S p rxvt-ml - multi-lingual VT102 terminal emulator for p rxvt-unicode - RXVT-like terminal emulator with Unicode s p rxvt-unicode-256color - multi-lingual terminal emulator with Unico p rxvt-unicode-lite - RXVT-like terminal emulator with basic Uni p sakura - simple but powerful libvte-based terminal p stterm - suckless tools simple terminal for windowe p terminal.app - Terminal Emulator for GNUstep i terminator - multiple GNOME terminals in one window p terminology - Enlightenment efl based terminal emulator p termit - Simple terminal emulator based on vte libr p vala-terminal - Terminal emulator for mobile devices p xfce4-terminal - Xfce terminal emulator p xiterm+thai - X terminal program with Thai languague sup i xterm - X terminal emulator p xvt - X terminal-emulator similar to xterm, but 

从理论上讲,这个术语应该能够按部分限制(主要的,贡献的,非自由的),但由于某些原因,这对我来说不合适。