Bagaimana cara mengetahui paket Debian dari mana file berasal?
Bagaimana cara mengetahui paket Debian dari mana file berasal?
Jawaban:
Ada beberapa utiliti di Debian yang melakukan tugas ini; periksa halaman ini untuk deskripsi. Saya akan menyebutkan dua dari mereka, apt-filedan dlocate.
apt-filemencari cache internal, sehingga memungkinkan Anda untuk tidak menginstal semua paket yang ingin Anda cari. Di bawah ini Anda akan menemukan panduan lebih rinci.
dlocateadalah alternatif cepat untuk dpkg -L(perintah yang mencantumkan konten paket), dan karena itu, pencarian hanya paket yang diinstal. Pencarian dilakukan oleh dlocate -S file.name.
Anda juga dapat mencari paket secara online menggunakan server packages.debian.org (bagian Cari konten paket ).
apt-fileSebaiknya perbarui dulu:
sudo apt-get update
Lihat untuk apa apt-file:
apt-cache show apt-file
Pasang itu:
sudo apt-get install apt-file
Baca data dari repositori (ini berfungsi juga tanpa sudotetapi menciptakan cache pengguna kemudian; dengan sudocache adalah seluruh sistem):
sudo apt-file update
Lakukan pencarian. Dalam contoh ini kita ingin tahu di mana paket yang xrandrdapat dieksekusi adalah:
apt-file search xrandr
Ini daftar banyak paket dengan unxrandr, lxrandr.moatau source_lxrandr.py. Tidak terlalu berguna dalam kasus kami. Pencarian lebih pintar:
apt-file search -x /xrandr$
( $menunjukkan ujung garis). Contoh output:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Hasil pertama tidak terlihat seperti dieksekusi, yang kedua tidak. Kami dapat menyelidiki lebih lanjut. Lari:
apt-cache show x11-xserver-utils
Bingo! Ini paketnya.
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Di mana bash adalah nama paket.
dpkg-query -SDAN mengirim Anda ke jalan yang salah menginstal paket opsional ..
Alternatif lain:
$ dpkg -S /bin/bash
bash: /bin/bash
Setidaknya pada Ubuntu saya, keduanya sepertinya ada dalam dpkgpaket, jadi tidak ada keuntungan nyata untuk yang spesifik ...
File yang dihasilkan instalasi tidak akan ditemukan oleh dpkg -S, seperti yang disebutkan di: https://askubuntu.com/a/667227/52975
Misalnya, /bin/ncmuncul ketika Anda menginstal paket netcat-openbsd.
Tetapi setelah:
dpkg -S /bin/nc
kita dapatkan dpkg-query: no path found matching pattern /bin/nc.
Ini terjadi karena /bin/ncdihasilkan oleh update-alternativespanggilan dalam skrip postinst yang dijalankan setelah instalasi.
Ini berfungsi seperti ini karena versi lain /bin/ncdisediakan oleh netcat-traditionalpaket.
Saya tidak berpikir ada cara umum untuk menemukan file yang dihasilkan tersebut. Khusus untuk symlink alternatif, kami dapat mengikuti tautan dengan readlink -f:
dpkg -S "$(readlink -f /bin/nc)"
Tidak terbiasa dengan Debian, saya bingung ketika saya mencoba ini:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
Sedikit penyelidikan dan saya menemukan paket:
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$