सवाल मैं कैसे पता लगा सकता हूं कि कौन सा पैकेज फ़ाइल का मालिक है?


मैं कैसे पता लगा सकता हूं कि फ़ाइल से डेबियन पैकेज क्या आया?


83
2017-08-23 10:23


मूल




जवाब:


डेबियन में कई उपयोग हैं जो इस कार्य को निष्पादित करते हैं; चेक यह पन्ना एक विवरण के लिए। मैं उनमें से दो का उल्लेख करूंगा, apt-file तथा dlocate

apt-file अपने आंतरिक कैश की खोज करता है, इस प्रकार आप उन सभी संकुल को इंस्टॉल नहीं कर सकते जिन्हें आप खोजना चाहते हैं। नीचे आपको अधिक विस्तृत मार्गदर्शिका मिलेगी।

dlocate एक तेज़ विकल्प है dpkg -L (आदेश जो पैकेज सामग्री सूचीबद्ध करता है), और इसी तरह, यह केवल स्थापित संकुल की खोज करता है। खोज द्वारा किया जाता है dlocate -S file.name

इसके अलावा आप ऑनलाइन पैकेज का उपयोग कर सकते हैं packages.debian.org सर्वर (द पैकेज की सामग्री खोजें अनुभाग)।


स्थापित करना और उपयोग करना apt-file

पहले अपडेट करना एक अच्छा विचार है:

sudo apt-get update

क्या देखूं apt-file के लिए है:

apt-cache show apt-file

इसे स्थापित करो:

sudo apt-get install apt-file

भंडार से डेटा पढ़ें (यह बिना काम करता है sudo लेकिन तब उपयोगकर्ता के कैश बनाता है; साथ में sudo कैश सिस्टम-व्यापी है):

sudo apt-file update

खोज करें इस उदाहरण में हम जानना चाहते हैं कि कौन सा पैकेज xrandr निष्पादन योग्य है:

apt-file search xrandr

इसमें कई पैकेज सूचीबद्ध हैं unxrandr, lxrandr.mo या source_lxrandr.py। हमारे मामले में बहुत उपयोगी नहीं है। अधिक चालाक खोज:

apt-file search -x /xrandr$

($ लाइन के अंत को दर्शाता है)। उदाहरण आउटपुट:

bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr

पहला परिणाम निष्पादन योग्य नहीं दिखता है, दूसरा दूसरा करता है। हम आगे की जांच कर सकते हैं। चलाएँ:

apt-cache show x11-xserver-utils

बिंगो! यह पैकेज है।


39



इस उत्तर में पहला लिंक (debianhelp.co.uk/findfile.htm) अब निष्क्रिय होना प्रतीत होता है। - rogpeppe


user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

जहां पैकेज नाम है bash।


90



यह जवाब स्वीकार किए गए एक से कहीं बेहतर है! - Bex


एक और विकल्प:

$ dpkg -S /bin/bash
bash: /bin/bash

कम से कम मेरे उबंटू पर, दोनों में होना प्रतीत होता है dpkg पैकेज, तो किसी भी विशिष्ट एक वास्तविक लाभ ...


35





स्थापना जेनरेट की गई फाइलें द्वारा नहीं मिलेगा dpkg -Sजैसा कि उल्लेख किया गया है: https://askubuntu.com/a/667227/52975

उदाहरण के लिए, /bin/nc जब आप पैकेज स्थापित करते हैं तब प्रकट होता है netcat-openbsd

लेकिन इस पर:

dpkg -S /bin/nc

हमें मिला dpkg-query: no path found matching pattern /bin/nc

ऐसा इसलिए होता है क्योंकि /bin/nc द्वारा उत्पन्न होता है update-alternatives में कॉल करें पोस्टइंस्ट स्क्रिप्ट जो स्थापना के बाद चला जाता है।

यह इस तरह काम करता है क्योंकि इसका दूसरा संस्करण /bin/nc द्वारा प्रदान किया जाता है netcat-traditional पैकेज।

मुझे नहीं लगता कि ऐसी जेनरेट की गई फाइलों को ढूंढने का एक सामान्य तरीका है। वैकल्पिक सिम्लिंक के विशिष्ट मामले में, हम बस लिंक का अनुसरण कर सकते हैं readlink -f:

dpkg -S "$(readlink -f /bin/nc)"

9





डेबियन से परिचित नहीं होने पर, जब मैंने कोशिश की तो मैं परेशान था:

kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$ 

कुछ जांच और मुझे पैकेज मिला:

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:~$ 

2