Pertanyaan yang cukup sederhana: apakah ada perintah shell (atau metode GUI) yang bisa saya gunakan, mengingat path ke file di sistem saya, memberi tahu saya paket apa yang meletakkannya di sana? Dengan asumsi file tersebut memang berasal dari paket, yaitu.
Pertanyaan bonus: bagaimana jika itu adalah file yang tidak diinstal pada sistem saya? Apakah ada, katakanlah, sebuah situs web yang akan membiarkan saya mencari file dan melihat paket apa, jika ada, menyediakannya?
package-management
David Z
sumber
sumber
Provides:
mekanisme tersebut. Dalam beberapa detail, perintah sukamailx
atausendmail
tidak dimasukkan sebagai biner dalam paket apa pun ; sebaliknya, berbagai paket menginstal binari mereka sendiri dan kemudian membuat beberapa dari mereka tersedia dengan nama "kanonik" via/etc/alternatives
. Lihat juga askubuntu.com/questions/366135/…Jawaban:
Anda dapat menggunakan
dpkg
perintah untuk mengetahui paket yang diinstal memiliki file:Dari
man dpkg
:Contoh:
Anda dapat mencari dengan path lengkap atau hanya dengan nama file.
Jika Anda ingin mencari file yang belum diinstal di komputer Anda, Anda dapat menggunakan Pencarian Paket Ubuntu
sumber
which
untuk menemukan dia memprogram:dpkg -S `which firefox`
dlocate
mungkin tidak melakukan pekerjaan, jika database dlocate kedaluwarsa. Anda harus meneleponsudo update-dlocatedb
untuk memperbaruinya.dpkg
jalur yang tepat tidak mengembalikan apa pun (misalnyadpkg /usr/bin/java
), coba saja nama yang dapat dieksekusi (misdpkg java
.)realpath
untuk menyelesaikan symlink, seperti ini:dpkg -S $(realpath $(which <command>))
.The
apt-file
perintah dapat melakukan ini untuk Anda dari baris perintah. Saya sering menggunakannya ketika membangun paket dari sumber. Untuk file yang disediakan oleh paket yang sudah diinstal pada sistem Anda,apt-cache
adalah pilihan lain.Untuk menginstal
apt-file
, lakukan:Kemudian, Anda perlu memperbarui basis datanya:
Dan, akhirnya, cari file:
Namun cara yang lebih ramah adalah dengan menggunakan situs web Pencarian Paket Ubuntu . Mereka memiliki opsi untuk "mencari isi paket" untuk nama file tertentu.
sumber
apt-file
sering menemukan positif palsu, yaitu paket yang tidak diinstal. Tentu saja jawaban ini bagus untuk "pertanyaan bonus".apt-file search <>
adalah analog terdekatdnf/yum whatprovides <>
.apt-file find
sejakapt-find
lama dan itu sangat berguna! Btw, versi terbaru membutuhkan root untukapt-file update
.Ada juga file apt untuk mencari file dalam paket yang tidak diinstal. Sebagai contoh:
sumber
Anda dapat mencari konten paket yang termasuk dalam berbagai rilis Ubuntu di situs web Paket Ubuntu . Lihat di bawah judul " Cari isi paket ".
Misalnya, berikut adalah hasil pencarian untuk libnss3.so di lucid (10.04):
http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&arch=any
sumber
Maksud Anda, paket mana dan bukan aplikasi mana. Aplikasi ini adalah manajer paket Anda, mis
Software Center
.Menggunakan
dpkg
:Contoh
Menggunakan
apt-file
:atau mungkin juga:
Contoh
Atau online di sini , di bagian ini
Search the contents of packages
.Contoh
sumber
Ini adalah ekstensi untuk jawaban luar biasa Alexx Roche . Saya mencoba mengedit jawaban itu, tetapi ditolak (meskipun tidak oleh Alexx)
Saya mencoba melacak apa yang diinstal
which
pada sistem saya. Setelah sedikit kerja saya buat/usr/local/bin/apt-whatprovides
Meskipun untuk sebagian besar HAL yang diinstal Anda hanya dapat menggunakan:
Untuk HAL yang tidak diinstal, Anda dapat menggunakan:
The
apt-whatprovides
Script bekerja untuk file yang dan tidak pada sistem Anda. Sebagai contoh, sistem saya kurangdig
tetapi memilikiping
ini sehingga hasilnya:Perhatikan bahwa itu
Searching for
adalah path lengkap untukping
(diinstal) dan hanya nama biner untukdig
tidak diinstal. Ini membantu saya menemukan bahwa saya perlu menginstaldnsutils
tanpa perlu mencari https://packages.ubuntu.com/#search_contentssumber
Saya mencoba melacak apa yang diinstal
which
pada sistem saya. Setelah sedikit kerja saya membuat apt-whatprovidesPadahal untuk sebagian besar HAL Anda hanya bisa menggunakan
sumber
Salah satu alasan Anda mungkin harus melakukan ini adalah jika Anda mengkompilasi perangkat lunak yang sudah ada paket ubuntu, Anda dapat menjalankannya
apt-get build-dep $PACKAGENAME
. Itu akan menginstal semua paket yang Anda butuhkan untuk dikompilasi$PACKAGENAME
.sumber