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:
リポジトリに少なくとも1 行存在する名前であるためです。と同じように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
ので、完全に同等ではありません。