it-swarm-tr.com

Dosya sağlayan paketi nasıl bulabilirim?

Yeterince basit bir soru: bazı Shell komutu var mı (ya da GUI yöntemi), sistemimdeki bir dosyanın yolu göz önüne alındığında, hangi paketin oraya koyduğunu söylüyor? Dosyanın aslında bir paketten geldiğini farz ediyorum.

Bonus soru: Peki ya sistemime yüklenmemiş bir dosyaysa? Bir dosyayı aramamı ve varsa hangi paketleri sağladığını görmemi sağlayacak bir web sitesi var mı?

460
David Z

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

man dpkg içinden:

 - S, - search dosyaadı-search-pattern ... 
 Kurulu paketlerden dosya adı arayın. 

Örnek:

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

Tam yolla veya yalnızca dosya adıyla arama yapabilirsiniz.

Bilgisayarınıza henüz yüklenmemiş dosyaları aramak istiyorsanız, buntu Paketleri Arama komutunu kullanabilirsiniz.

427
Ressu

apt-file komutu bunu sizin için komut satırından yapabilir. Paketleri kaynaktan oluştururken sık sık kullanıyorum. Sisteminizde kurulu olan paketler tarafından sağlanan dosyalar için apt-cache başka bir seçimdir.

_apt-file_ uygulamasını kurmak için şunu yapın:

_Sudo apt-get install apt-file
_

Sonra veritabanını güncellemeniz gerekir:

_apt-file update
_

Ve 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 çok daha dostane bir yol buntu Paketleri Arama web sitesini kullanmaktır. Belirli bir dosya adı için "paketlerin içeriğini arama" seçeneğine sahiptirler.

235
jbowtie

Yüklenmemiş paketlerdeki dosyaları aramak için apt-file da vardır. Örneğin:

apt-file list packagename
43
ptman

Çeşitli Ubuntu sürümlerinde bulunan paketlerin içeriğini buntu Paketleri web sitesinde bulabilirsiniz. " Paketlerin içeriğini ara " başlığına bakın.

Örneğin, libids3.so için lucid (10.04) 'te bulunan arama sonuçları:

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&Arch=any

17
moberley

Hangi paketi, hangi uygulamayı değil demek istiyorsun. Uygulama, paket yöneticinizdir, örn. Software Center.

dpkg kullanarak:

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

apt-file kullanarak:

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

veya ayrıca mümkün:

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 , Search the contents of packages bölümünde.

enter image description here

Örnek

enter image description here

13
A.B.

Bu, Alexx Roche'un mükemmel cevabı 'nın bir uzantısıdır. Bu cevabı değiştirmeye çalıştım, fakat reddedildi (Alexx tarafından olmasa da)


Sistemime which 'in ne yüklendiğini izlemeye çalışıyordum. Küçük bir çalışmadan sonra /usr/local/bin/apt-whatprovides 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]) 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üklenen çoğu ŞEY için, sadece kullanabilirsiniz:

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

Yüklenmemiş ŞEYLER için şunları kullanabilirsiniz:

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

apt-whatprovides betiği, sisteminizde olan ve olmayan dosyalar için çalışır. Örneğin, sistemim Dig’den yoksundu, ancak ping’a sahip değildi.

[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

Searching for, ping (yüklü) ve yalnızca Dig için ikili bir adın kurulu olmadığına dikkat edin. Bu, aramaya gitmeye gerek kalmadan dnsutils yüklemem gerektiğini keşfetmeme yardımcı oldu https://packages.ubuntu.com/#search_contents

3
Bruno Bronosky

Sistemime which 'in ne yüklendiğini izlemeye çalışıyordum. Biraz çalıştıktan sonra 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]))
PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$")
echo ${PACKAGE%:*}

Çoğu şey için sadece kullanabilirsiniz

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

Bunu yapmak zorunda olmanızın bir nedeni, zaten bir ubuntu paketi olan yazılımı derliyorsanız, apt-get build-dep $PACKAGENAME komutunu çalıştırabilirsiniz. Derlemeniz gereken tüm paketleri kuracak $PACKAGENAME.

2
Rory