Bir dosya sağlayan paketi nasıl bulabilirim?

379

Yeterince basit soru: Sistemimde bir dosyaya giden yol göz önüne alındığında bunu kullanabileceğim bir kabuk komutu (veya GUI yöntemi) var mı? Dosyanın gerçekte bir paketden geldiğini varsayarak, yani.

Bonus sorusu: Sistemimde yüklü olmayan bir dosyaysa ne olur? Bir dosyaya bakmama izin verecek bir web sitesi var mı ve varsa hangi paketleri sunalım?

    
sordu David Z 30.07.2010 10:10

8 cevap

356

Hangi paketin bir dosyaya sahip olduğunu öğrenmek için dpkg komutunu kullanabilirsiniz:

man dpkg 'den:

-S, --search filename-search-pattern...
                  Search for a filename from installed packages.

Örnek:

$ dpkg -S /bin/ls
coreutils: /bin/ls

Ya tam yolla veya yalnızca dosya adıyla arama yapabilirsiniz.

Henüz bilgisayarınıza yüklenmemiş dosyaları aramak istiyorsanız, Ubuntu Paketleri Aramasını kullanabilirsiniz.

    
verilen cevap Ressu 30.07.2010 10:42
187

apt-file komutu bunu komut satırından sizin için yapabilir. Paketleri kaynaktan oluştururken sık sık kullanırım. Sisteminizde önceden yüklenmiş olan paketler tarafından sağlanan dosyalar için apt-cache başka bir şeydir. seçim.

apt-file uygulamasını yüklemek için şunu yapın:

sudo apt-get install apt-file

Ardından, veritabanını güncellemeniz gerekiyor:

apt-file update

Son olarak, dosyayı arayın:

$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

Ancak, daha kolay bir şekilde Ubuntu Paketleri Arama web sitesini kullanmaktır. Belirli bir dosya adı için "paketlerin içeriğini arama" seçeneği vardır.

    
verilen cevap jbowtie 11.08.2010 04:43
35

Ayrıca, yüklü olmayan paketlerde dosya aramak için uygun dosya var. Örneğin:

apt-file list packagename
    
verilen cevap ptman 30.07.2010 10:49
16

Çeşitli Ubuntu sürümlerinde yer alan paketlerin içeriğini Ubuntu Paketleri web sitesinde arayabilirsiniz. " Paketlerin içeriğini arayın " başlığına bakın.

Örneğin, burada libid'lerde libnss3.so için arama sonuçları (10.04):

İşte

    
verilen cevap moberley 11.08.2010 04:42
10

Yani hangi paketi hangi paketle değil. Uygulama, paket yöneticiniz örn. % Co_de%.

Software Center değerini kullanma:

dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs

Örnek

% dpkg -S /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

dpkg değerini kullanma:

apt-file search /usr/lib/tracker/tracker-store

veya ayrıca:

apt-file search --regex /tracker-extract$
apt-file search --regex /tracker-miner-fs$

Örnek

% apt-file search /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

Veya çevrimiçi burada , apt-file bölümünde.

Örnek

    
verilen cevap A.B. 29.11.2015 16:57
2

Sistemimde which yüklü olanları bulmaya çalışıyordum. Küçük bir çalışmadan sonra uygun-provürler yarattım

#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY=$(realpath $(which [email protected]))
PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$")
echo ${PACKAGE%:*}

Çoğu THING için sadece kullanabilirsiniz

apt-file search $(realpath $(which THING))|grep 'THING$'
    
verilen cevap Alexx Roche 17.03.2018 16:25
2

Bu, Alexx Roche'un mükemmel yanıtı için bir uzantıdır. Bu yanıt için bir düzenleme yapmaya çalıştım, ancak reddedildi (ancak Alexx tarafından değil)

Sistemimde which yüklü olanları bulmaya çalışıyordum. Biraz çalıştıktan sonra /usr/local/bin/apt-whatprovides

oluşturdum
#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY="$(realpath $(which [email protected]) 2>/dev/null)"
[ -z "$BINARY" ] && BINARY="[email protected]"
echo Searching for $BINARY
PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
echo "${PACKAGE}"

Yüklü çoğu THING için, sadece şunu kullanabilirsiniz:

apt-file search $(realpath $(which THING)) | grep 'THING$'

Yüklü olmayan THING'ler için şunları kullanabilirsiniz:

apt-file search THING | grep '/THING$'

apt-whatprovides betiği, sisteminizde bulunan ve olmayan dosyalar için çalışır. Örneğin, sistemim% co_de değerinden yoksundu, ancak dig değerine sahipti, bu yüzden sonuçlandı:

[email protected]:~ $ apt-whatprovides ping
Searching for /bin/ping
inetutils-ping: /bin/ping
iputils-ping: /bin/ping

[email protected]:~ $ apt-whatprovides dig
Searching for dig
dnsutils: /usr/bin/dig
epic4: /usr/share/epic4/script/dig
epic4-help: /usr/share/epic4/help/8_Scripts/dig
knot-dnsutils: /usr/bin/dig

ping dosyasının Searching for (kurulu) için tam bir yol olduğuna ve ping için henüz yüklenmemiş ikili bir ada olduğuna dikkat edin. Bu, İşte aramasına gerek kalmadan dig yüklemem gerektiğini keşfetmeme yardımcı oldu.

    
verilen cevap Bruno Bronosky 18.07.2018 07:45
1

Bunu yapmanın bir nedeni, zaten bir ubuntu paketi olan yazılımı derliyorsanız, apt-get build-dep $PACKAGENAME dosyasını çalıştırabilirsiniz. Bu, $PACKAGENAME derlemek için gereken tüm paketleri yükleyecektir.

    
verilen cevap Rory 11.08.2010 21:31

Etiketlerdeki diğer soruları oku