Я вижу, что в 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
, поэтому они не являются полностью эквивалентными.