Saya melihat bahwa dpkg memiliki bidang "Menyediakan" untuk paket.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Bagaimana saya tahu paket mana yang menyediakan "editor" yaitu?
Saya melihat bahwa dpkg memiliki bidang "Menyediakan" untuk paket.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Bagaimana saya tahu paket mana yang menyediakan "editor" yaitu?
Jawaban:
Anda dapat mencapai efek yang diinginkan tanpa aptitude
(yang tampaknya tidak disarankan hari ini) dengan menggunakan apt-cache showpkg
, yang mencakup daftar Reverse Provides
. Memipipkannya melalui sed
skrip kecil akan menghilangkan hal-hal lain:
apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'
Contoh yang sedikit lebih cantik (tetapi lebih lama untuk diketik) (hanya mencantumkan nama paket, bukan versi, dan mengurutkannya menurut abjad) dapat dicapai dengan awk
:
apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'
... dan ini dapat disalurkan melalui uniq
untuk menghapus duplikat (yang mungkin ada karena beberapa versi paket yang disediakan terbalik). Perhatikan bahwa penggunaan uniq
tidak akan membantu dengan versi pertama, karena uniq
hanya menghapus duplikat jika mereka berada di baris yang berdekatan dan sed
versi tidak mengurutkan output.
Akhirnya, seseorang dapat mendefinisikan suatu fungsi untuk penggunaan yang lebih mudah, sebagai berikut:
provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}
Tempelkan ini pada (misalnya) .bashrc
, sehingga itu akan memuat ketika shell melakukannya, dan menjadi mungkin untuk menjalankan provides <package>
untuk mendapatkan paket-balik yang disediakan.
sort -u
. Tidak tahu itu. Saya bertanya-tanya mengapa itu tidak mengambil doom-wad-editor
...? Itu sangat menarik karena apt-cache showpkg
menunjukkan itu sebagai tidak tergantung sama sekali.
aptitude
pencarian akan cocok dengan substring di Provides:
lapangan (sehingga mengambil deutex
), di mana apt-cache showpkg
metode ini menggunakan nama paket yang tepat. Keduanya, oleh karena itu, mungkin memiliki tempat mereka.
<package>
ini adalah paket virtual di sini. Seperti editor
,.
Provides:
baris dalam repositori. Dengan cara yang sama seperti apt-cache search
, kemudian, hasil yang benar ketika tidak ada adalah kurangnya output - yang disediakan oleh opsi-opsi ini. Mungkin ada versi konkret dan virtual dari paket yang sama, dan saya kira kita bisa meningkatkan ini untuk menunjukkan versi konkret di mana itu ada, tetapi hanya itu.
Aptitude menyediakan fungsi ini juga. Jadi perintah seperti ini akan menampilkan semua paket yang menyediakan editor.
aptitude search '~Peditor'
Anda bahkan dapat menambahkan kendala lain. Suka tunjukkan hanya editor yang diinstal.
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
$
Membaca database secara langsung:
#!/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)))
Pemakaian:
$ python3 whichPkgsProvide.py editor < /var/lib/dpkg/available
['vim-gnome', 'nano', 'vim-tiny']
$
berdasarkan contoh Anda. Saya dapat mendaftar paket yang disediakan editor
dengan menggunakanapropos
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
cari melalui halaman manual, jadi ini hanya akan mencantumkan perintah yang diinstal ... Plus, OP ingin daftar paket .
sort -u
akan menghapus duplikat, sehingga panggilan keuniq
tidak diperlukan. Tapi apa pun, solusi yang bagus, ini jauh lebih cepat.aptitude
akan cocokdoom-wad-editor
juga, jadi mereka tidak sepenuhnya setara.