Я вижу, что в dpkg есть поле "Обеспечивает" для пакетов.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Как мне узнать, какие пакеты предоставляют, например, "редактор"?
Я вижу, что в dpkg есть поле "Обеспечивает" для пакетов.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Как мне узнать, какие пакеты предоставляют, например, "редактор"?
Ответы:
Вы можете достичь желаемого эффекта без 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, чтобы он загружался, когда запускается оболочка, и становится возможным запуск 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, поэтому они не являются полностью эквивалентными.