Bir dosyanın hangi pakete ait olduğunu Ubuntu / Debian'da bulabilirsiniz.


300

Ubuntu 8.04 sistemimde çalışırken sık sık kendimi bir program, kılavuz sayfası veya başka bir dosya eksik buluyorum. Hangi paketin belirli bir dosyayı içerdiğini bulmanın basit bir yolu var mı (önceden yüklenmiş olsun olmasın)? Belki apt veya dpkg için bazı gizli seçenek?



25
dpkg -S /path/to/filePaketiniz varsa.
Zaz

Yanıtlar:


247
apt-file search filename

veya

apt-file search /path/to/file


Yüklemek apt-fileiçin şunları kullanın:

sudo apt-get install apt-file

Kullanmadan önce veritabanını güncellemeniz gerekir:

sudo apt-file update

7
FYI: apt-file, depolar tarafından sağlanan Contents-amd64.gz'ye bağlı görünüyor. Ve tüm 3. parti depoları bu dosyayı sağlamıyor.
Jokester

3
Benim için işe yaramadı. Veritabanını güncelledim ama hiçbir şey döndürmedi. dpkg -Saşağıda açıklandığı gibi çalışır.
Northys,

404

(Debian / Ubuntu) Bir dosyanın hangi pakete ait olduğunu keşfedin :

dpkg -S /usr/bin/ls

'dpkg -S' sadece sağladığınız dizgeyle eşleşir, bu nedenle sadece 'ls' argümanı olarak kullanmak, dosya adının herhangi bir yerinde 'ls' olan herhangi bir paketten herhangi bir dosyayla eşleşir. Bu yüzden genellikle mutlak bir yol kullanmak iyi bir fikirdir. İkinci örnekte, dpkg olarak bilinen 12 bin dosyanın 'ls' çıplak dizesine uyduğunu görebilirsiniz.


33
Bu sadece dosyalar önceden kurulmuşsa
John T

19
Bunun aksine apt-file, bu ayrıca manuel olarak yüklendiyse paketi bir dosyaya da bulur dpkg -i!
tanius

4
Eğer alırsanız dpkg-sorgu: hayır yolu eşleştirme kalıbı bulundu bu deneyin : dpkg -S "$(readlink -fn "$(which rename)")".
Pablo A,

1
Garip, bu benim için işe yaramadı dpkg-query: no path found matching pattern /usr/bin/java, bir dosya olmasına rağmen/usr/bin/java
nnyby

@nnyby Pablo A'nın yorumuna bak
vog

19

Packages.debian.org bu görevi gerçekleştirmek için her zaman kullandığım şey. Apt-file üzerinde üstündür çünkü dosya adlarının bölümlerini de bulabilir. Aynı zamanda açıklamaları, hataları vb. Listeleyen ana paketler listesine de bağlanmıştır. Komut satırından değil, yine de oldukça kullanışlıdır.

Hız için, URL’yi yer imlerine ekledim:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

Firefox’ta bir anahtar kelime olarak "debfind" eklendi (yükseltilmiş yer imi yöneticisinde "daha" tıklayın), bu yüzden sadece "debfind" yazabilir ve çalışacaktır. Dağıtımın diğer sürümleri için 'paketini' kararsızdan kararlı ya da test etmeye değiştirebilirsiniz.


Yine de özel repolarla çalışmıyor.
Ctrl-C

Otomasyon konusunda kötü bir seçim.
Alexander Shcheblikin

11

Ayrıca dlocate kullanabilirsiniz. Man sayfasından;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

1
dlocateAynı zamanda en sevdiğim yöntem, çok güvenilir.
Avio

2
@Avio dlocate, sudo update-dlocatedbilk çalıştırmadığınız sürece yeni kurulmuş bir paket bulamıyor . Komut otomatik /etc/cron.daily/dlocate günlük çalıştırılır
Jarno

4

Wajig'i buldum ...

wajig whichpackage /path/to/file 

Örneğin.

wajig whichpackage /etc/apt/sources.list

Wajig, hiç öğrenmek istemediğiniz tüm apt-get, dpkg iyiliğini saran kullanışlı bir komut satırı veya konsol aracıdır. .

Wajig kullanımı kurmak için:

apt-get install wajig

'Hangipackage' komutunun kendisi apt-file dosyasına bağlıdır.

kullanmadan önce veritabanını güncellemeniz gerekecek: - henüz bilmiyorum wixig güncellemesi bir apt-get güncellemesi yaparsa, dosya önbelleğini de günceller mi bilmiyorum ama bekliyorum.

sudo wajig update

sudo apt-file update

(ve Süper İnek, Paskalya dilleri?!)


2

Jamuraa'nın Debian'a cevabını simmilar olarak, Ubuntu için http://packages.ubuntu.com/ adresine de gidebilirsiniz . Bir dosyanın yolunu girebileceğiniz "Paketlerin içeriğini ara" arama kutusunu bulmak için biraz aşağı kaydırmanız gerekir .


Şimdi eğer sadece bir Raspbian da olsa bir tane :)
XTL


0

Bulunamayan paket, olası komutlar ve debian paketinin adı hakkında ipuçları verir. Bash kabuğuna komutu yazarak ve çıktısına bakarak çalışır.

Örneğin, komut adı biliniyorsa:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

ve komut bilinmiyorsa, bazı tahminler uygulanır:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found

Bu, istenen OP gibi, rastgele dosyalar için çalışmaz.
CVn

Program zararlı şeyler yaparsa ve yüklü ise bu sorunlu bir ipucu. Ekleme -hveya --helpsonunda biraz yardımcı olacaktır. -hSonunda eklemek , bunu yeterince güvenli hale getirecekse, tavsiye ederim, ancak yine de OP'nin istediğini elde etmek için iyi bir yol değil.
Dr Beco,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.