Bir dosyanın hangi Debian paketinden geldiğini nasıl öğrenebilirim?
Bir dosyanın hangi Debian paketinden geldiğini nasıl öğrenebilirim?
Yanıtlar:
Debian'da bu görevi yerine getiren birçok fayda var; bir açıklama için bu sayfayı kontrol edin . İkisinden söz edeceğim apt-file
ve dlocate
.
apt-file
dahili önbelleğini arar, böylece aramak istediğiniz tüm paketleri kurmamanıza izin verir. Aşağıda daha ayrıntılı bir rehber bulacaksınız.
dlocate
dpkg -L
(paket içeriğini listeleyen komut) hızlı bir alternatiftir ve bu nedenle yalnızca kurulu paketleri arar. Arama tarafından gerçekleştirilir dlocate -S file.name
.
Ayrıca paketleri.debian.org sunucusunu ( paketlerin içeriğini arama bölümü) kullanarak çevrimiçi olarak arama yapabilirsiniz .
apt-file
İlk önce güncellemek iyi bir fikirdir:
sudo apt-get update
Ne apt-file
için olduğuna bakın :
apt-cache show apt-file
Yükle:
sudo apt-get install apt-file
Depolardaki verileri okuyun (bu işlem aynı zamanda çalışır, sudo
ancak kullanıcının önbelleğini oluşturur; daha sonra sudo
önbellek sistem çapındadır):
sudo apt-file update
Arama yap. Bu örnekte hangi paketin xrandr
çalıştırılabilir olduğunu bilmek istiyoruz :
apt-file search xrandr
Bu birçok paketleri listeler unxrandr
, lxrandr.mo
ya source_lxrandr.py
. Bizim durumumuzda pek kullanışlı değil. Daha akıllıca arama:
apt-file search -x /xrandr$
( $
satırın sonunu gösterir). Örnek çıktı:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
İlk sonuç çalıştırılabilir gibi görünmüyor, ikincisi ise sonuçta göze çarpıyor. Daha fazla araştırma yapabiliriz. Çalıştırmak:
apt-cache show x11-xserver-utils
Bingo! Bu paket.
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Bash, paket adıdır.
dpkg-query -S
VE isteğe bağlı paketleri kurmanın yanlış yolunu size gönderir ..
Başka bir alternatif:
$ dpkg -S /bin/bash
bash: /bin/bash
En azından Ubuntu'mda, her ikisi de dpkg
pakette görünüyor , bu yüzden herhangi birinin özel bir avantajı yok ...
Kurulum tarafından oluşturulan dosyalar şurada dpkg -S
belirtildiği gibi bulunmayacaktır : https://askubuntu.com/a/667227/52975
Örneğin /bin/nc
, paketi yüklediğinizde görünür netcat-openbsd
.
Ancak üzerine:
dpkg -S /bin/nc
anlıyoruz dpkg-query: no path found matching pattern /bin/nc
.
Bunun nedeni /bin/nc
, kurulumdan sonra çalıştırılan postinst betiğindekiupdate-alternatives
çağrı tarafından üretilmesidir .
Böyle çalışır, çünkü paketin başka bir sürümü de /bin/nc
verilir netcat-traditional
.
Bu tür oluşturulan dosyaları bulmanın genel bir yolu olduğunu sanmıyorum. Alternatif semboliklerin özel durumunda, şu bağlantıyı takip edebiliriz readlink -f
:
dpkg -S "$(readlink -f /bin/nc)"
Debian'a aşina olmam, bunu denediğimde şaşırmıştım:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
Biraz araştırma ve paketi buldum:
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$