यह पता लगाएं कि उबंटू / डेबियन में कोई फ़ाइल किस पैकेज की है?


299

जब मैं अपने उबंटू 8.04 सिस्टम पर काम कर रहा होता हूं तो मैं अक्सर खुद को एक प्रोग्राम, मैन पेज या अन्य फाइल गुम पाता हूं। क्या यह देखने का कोई सरल तरीका है कि किसी पैकेज में दी गई फ़ाइल (चाहे वह पहले से स्थापित हो या नहीं) हो? शायद apt या dpkg के लिए कुछ अस्पष्ट विकल्प?



25
dpkg -S /path/to/fileयदि आपके पास पैकेज स्थापित है।
ज़ाज़

जवाबों:


247
apt-file search filename

या

apt-file search /path/to/file


स्थापित करने के लिए apt-file, उपयोग करें:

sudo apt-get install apt-file

इसका उपयोग करने से पहले आपको इसके डेटाबेस को अपडेट करना होगा:

sudo apt-file update

7
FYI करें: apt-file, भंडार द्वारा प्रदान की गई Contents-amd64.gz पर निर्भर करती है। और सभी तीसरे पक्ष के प्रतिनिधि इस फाइल को प्रदान नहीं करते हैं।
जोकेस्टर

3
यह मेरे लिए सही नहीं रहा। मैंने डेटाबेस को अपडेट किया लेकिन यह कुछ भी वापस नहीं करता है। dpkg -Sनीचे वर्णित के रूप में काम करता है।
उत्तर

404

(डेबियन / उबंटू) डिस्कवर करें कि फ़ाइल किस पैकेज से संबंधित है :

dpkg -S /usr/bin/ls

'dpkg -S' सिर्फ उस स्ट्रिंग से मेल खाता है, जिसकी आप आपूर्ति करते हैं, इसलिए तर्क के रूप में 'ls' का उपयोग करते हुए फ़ाइलनाम में कहीं भी 'ls' वाले किसी भी पैकेज से किसी भी फ़ाइल से मेल खाता है। इसलिए आमतौर पर एक निरपेक्ष मार्ग का उपयोग करना एक अच्छा विचार है। आप दूसरे उदाहरण में देख सकते हैं कि dpkg को ज्ञात 12 हजार फाइलें नंगे स्ट्रिंग 'ls' से मेल खाती हैं।


33
यह तभी है जब फाइलें पहले से ही स्थापित हैं
जॉन टी।

19
इसके विपरीत apt-file, यह एक फ़ाइल के लिए पैकेज को भी ढूँढता है अगर यह मैन्युअल रूप से स्थापित किया गया था dpkg -i!
तानीस

4
आप मिलता है dpkg-क्वेरी: कोई पथ से मेल खाते नमूने पाया इस कोशिश : dpkg -S "$(readlink -fn "$(which rename)")"
पाब्लो ए

1
अजीब, यह मेरे लिए काम नहीं किया: dpkg-query: no path found matching pattern /usr/bin/javaहालांकि, वहाँ एक फ़ाइल है/usr/bin/java
nnyby

@nnyby पाब्लो एक की टिप्पणी देखें
VOG

19

package.debian.org वह है जो मैं हमेशा इस कार्य को पूरा करने के लिए उपयोग करता हूं। यह apt-file से बेहतर है क्योंकि यह फ़ाइलनाम के कुछ हिस्सों को भी खोज सकता है। यह मुख्य संकुल सूची से भी जुड़ा हुआ है जो सभी अच्छी वेबसाइट में विवरण, बग इत्यादि सूचीबद्ध करेगा। कमांड लाइन से उतना उपयोगी नहीं है, लेकिन अभी भी काफी उपयोगी है।

गति के लिए, मैंने url को बुकमार्क किया:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

फ़ायरफ़ॉक्स में, और एक कीवर्ड के रूप में "debfind" को जोड़ा (बुकमार्क प्रबंधक में "अधिक" पर क्लिक करें इसके साथ hilighted), इसलिए मैं बस "debfind" टाइप कर सकता हूं और यह काम करेगा। यदि आप चाहें, तो वितरण के अन्य संस्करणों के लिए आप इसे अस्थिर या स्थिर परीक्षण से 'सूट' में बदल सकते हैं।


हालांकि यह कस्टम रिपोज के साथ काम नहीं करता है।
Ctrl-C

स्वचालन के संबंध में खराब विकल्प।
अलेक्जेंडर शेकब्लिकिन

11

आप dlocate का उपयोग भी कर सकते हैं। मैन पेज से;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

1
dlocateभी मेरी पसंदीदा विधि है, बहुत विश्वसनीय है।
Avio

2
@Avio dlocateको हाल ही में स्थापित पैकेज नहीं मिलता है जब तक कि आप sudo update-dlocatedbपहले न चलें । कमांड स्वचालित रूप से /etc/cron.daily/dlocate
jarno

4

मैंने वाजिग पाया ...

wajig whichpackage /path/to/file 

जैसे।

wajig whichpackage /etc/apt/sources.list

वाजिग एक आसान कमांड लाइन या कंसोल टूल है जो सभी एपेट-गेट, डीपीकेजी अच्छाई को लपेटता है जो आप कभी नहीं सीखना चाहते थे। ।

वाजिग उपयोग को स्थापित करने के लिए:

apt-get install wajig

वह कमांड 'व्हॉटपेकज' स्वयं apt-file पर निर्भर करता है

उपयोग करने से पहले आपको इसके डेटाबेस को अपडेट करने की आवश्यकता होगी: - मुझे अभी तक यह नहीं पता है कि वाजिग अपडेट व्हाट्सएप एप-गेट अपडेट भी फाइल कैश को अपडेट करता है, लेकिन मुझे उम्मीद है कि यह हो सकता है।

sudo wajig update

sudo apt-file update

(और सुपर गाय, ईस्टर एग्स!)


2

सिम्बिलर को जमुरा का जवाब देबियन के लिए, आप उबंटू के लिए http://packages.ubuntu.com/ पर भी जा सकते हैं । आपको "पैकेज की सामग्री खोजें" खोज बॉक्स खोजने के लिए थोड़ा नीचे स्क्रॉल करना होगा जहां आप किसी फ़ाइल का पथ दर्ज कर सकते हैं।


अब अगर केवल रास्पियन में भी एक था :)
XTL

0

Http://www.kodkast.com/applications/find-which-package-file-belongs-to का उपयोग करके फ़ाइलों को खोजने का प्रयास करें

यह उन फ़ाइलों की खोज करने के लिए एक एप्लिकेशन है जो विभिन्न आरपीएम / लाइनक्स पैकेजों में निहित हैं, और बहुत उपयोगी है जब आपके पास आरपीएम आपके मशीन पर स्थापित नहीं होता है।


डाउनवोट: लिंक टूट गया है और यह लिंक पहली बार में RPM पैकेज के लिए लगता है।
त्रिकाल

0

कमांड-न-पाया गया पैकेज आपको संभावित कमांड और डेबियन पैकेज के नाम के बारे में संकेत देता है। यह बैश शेल में कमांड टाइप करके और इसके आउटपुट को देखकर काम करता है।

उदाहरण के लिए यदि कमांड नाम ज्ञात है:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

और यदि कमांड ज्ञात नहीं है, तो कुछ अनुमान लगाए जाते हैं:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found

हालांकि, यह ओपी के अनुरोध की तरह मनमानी फाइलों के लिए काम नहीं करता है।
बजे एक CVn

यह एक समस्याग्रस्त टिप है यदि प्रोग्राम हानिकारक चीजें करता है और आईएस स्थापित है। जोड़ने -hया --helpअंत में थोड़ा मदद मिलेगी। यदि -hअंत में जोड़ने से यह सुरक्षित हो जाता है तो मैं इसकी सिफारिश करूंगा, लेकिन फिर भी यह ओपी से जो पूछता है उसे हासिल करने का अच्छा तरीका नहीं है।
डॉ। बीको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.