Как искать пакеты, которые предоставляют виртуальный пакет?

Как искать пакеты, которые предоставляют виртуальный пакет?

Например, я хочу найти пакеты, которые предоставляют «x-терминал-эмулятор» в «главном» хранилище Ubuntu 12.04. Один из способов сделать это - проанализировать индекс пакета:

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)?

4
задан 27 October 2013 в 00:36

2 ответа

Если вы знаете, что 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 выражение лучше

0
ответ дан 27 October 2013 в 00:36

Используйте 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 

Теоретически, термин ~s должен иметь возможность ограничивать по разделам (main, contrib, non-free), но это по какой-то причине у меня не получалось.

0
ответ дан 27 October 2013 в 00:36

Другие вопросы по тегам:

Похожие вопросы: