मुझे कैसे पता चलेगा कि कौन सा पैकेज फ़ाइल का मालिक है?


जवाबों:


42

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

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

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

इसके अलावा आप package.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

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


इस उत्तर की पहली कड़ी ( debianhelp.co.uk/findfile.htm ) अब ख़राब लगती है।
— रोज़गेपे

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

जहां बैश पैकेज नाम है।


3
यह उत्तर स्वीकृत की तुलना में कहीं बेहतर है!
— Bex

41

एक अन्य विकल्प:

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

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


14

स्थापना से उत्पन्न फ़ाइलें नहीं 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)"

2

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

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:~$ 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.