बाइनरी के स्रोत पैकेज को खोजने के लिए कमांड?


33

मुझे पता है कि एक whichकमांड है, जो एक बाइनरी का पूरा नाम गूँजता है (जैसे which sh)। हालाँकि, मुझे पूरा यकीन है कि एक आदेश है जो उस पैकेज को गूँजता है जो एक विशेष बाइनरी प्रदान करता है। क्या ऐसी कोई आज्ञा है? यदि ऐसा है, तो ये क्या है? मैं इसे चलाने में सक्षम होना चाहता हूं:

commandName ls

और पाओ

coreutils

उदाहरण के लिए।

जवाबों:


36

मुझे लगता है कि आप dpkg -Sकमांड की तलाश कर रहे हैं ( dpkg के लिए अक्सर उपयोग किए जाने वाले विकल्प भी देखें )।


4
धन्यवाद! dpkg -S `which COMMANDHERE`मेरे लिए काम किया।
डेलन अजाबनी

जेंटू: क्यूफाइल <नाम>
सर्गेई

dpkg -Sबाइनरी पैकेज नाम का नाम पाता है, जो स्रोत (कोड) पैकेज के नाम से भिन्न हो सकता है।
टीनो

बस पूर्णता के लिए, -Sका संक्षिप्त रूप है --searchविकल्प है, जो वास्तव करने के लिए एक विकल्प है dpkg-queryआदेश (लेकिन सादा dpkgकाम करता है भी)
waldyrious

10

यदि आप किसी ऐसे पैकेज में फाइलें ढूंढना चाहते हैं जिसे आपने इंस्टॉल नहीं किया है, तो apt-file का उपयोग करें

apt-get install -y apt-file
apt-file update

फिर, कुछ खोजने के लिए:

apt-file search /usr/bin/file

या

apt-find search file

जहाँ "फ़ाइल" आप जो भी खोज रहे हैं उसका नाम है।

अगर आपको हर डेबियन सिस्टम पर ऐसा करने का मन नहीं है, तो आप इस स्क्रिप्ट का उपयोग कर सकते हैं:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

मैं तो बस कोड़ा है, लेकिन यह अच्छी तरह से काम करने लगता है।

नोट: "dpkg -S" केवल उन्हीं चीज़ों को खोजता है, जिन्हें आपने पहले ही स्थापित किया है।


3
-yपैरामीटर का उपयोग करना खतरनाक है, यह किसी भी संख्या के लिए हां कह सकता है। स्क्रिप्ट में यह ठीक हो सकता है, लेकिन पहले आदेश वास्तव में पढ़ना चाहिए apt-get install apt-fileबिना -yउपयोगकर्ता के सिस्टम दिखेगा क्या आप जानते हैं कि नहीं कर सकते।
jmiserez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.