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ı?
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.
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.
Yüklenmemiş paketlerdeki dosyaları aramak için apt-file da vardır. Örneğin:
apt-file list packagename
Ç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ı:
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.
Örnek
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
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$'
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
.