कैसे निर्धारित करें कि कौन सा काढ़ा पैकेज एक दी गई फ़ाइल प्रदान करता है?


16

क्या यह पता लगाने का एक तरीका है कि कौन सा brewपैकेज किसी फ़ाइल को प्रदान करता है (जैसे apt-fileउबंटू या pkgfileआर्क पर)?

मैं उस क्वेरी के बारे में बात नहीं कर रहा हूं जो स्थानीय रूप से स्थापित पैकेज मेरे सिस्टम पर एक फ़ाइल का मालिक है, मेरे पास एक विशेष फ़ाइल है जिसे मुझे स्थापित /usr/local/lib/libboost_python.dylibकरने की आवश्यकता है ( विशिष्ट होने के लिए) और जानना चाहता हूं कि कौन सा दूरस्थ पैकेज उस फ़ाइल को प्रदान करेगा।


boostजब तक आप इसे कॉन्फ़िगर करते हैं, तब तक फ़ाइल उपलब्ध कराई जाती है --with-python। फिर भी यह जानना अच्छा होगा कि क्या कोई ऐसा तरीका है जिससे क्वेरी की जा सकती है कि कौन सी फाइलें किस फाइल द्वारा प्रदान की जाती हैं ...
mgalgs

FWIW यह अब boost-pythonइसके बजाय द्वारा प्रदान किया गया है।
टिम स्मिथ

जवाबों:


8

वहाँ नही है। Homebrew में कुछ भी उन फ़ाइलों की सूची नहीं रखता है जिन्हें पैकेज की अनुमति है या स्थापित करने की उम्मीद है।


4

जैसा कि इस उत्तर में कहा गया है कि आप ऐसा कर सकते हैं ls -l /usr/local//lib/whateverऔर देख सकते हैं कि सिमिलिंक कहाँ पर है।


याls -l $(which somecommand)
12

4

हालांकि , उपकरण की तरह उपयुक्त खोज नहीं है, जो किसी को सार्वजनिक होमब्रेव पैकेज खोजने की अनुमति देता है जो एक फ़ाइल प्रदान कर सकता है, कई काढ़ा पैकेज एक लिनक्स या यूनिक्स समकक्ष पर आधारित होते हैं। आप आवश्यक पैकेज खोजने के लिए डेबियन पैकेज वेबसाइट खोज सकते हैं।

फ़ाइल goocanvas.pc प्रदान करने वाले पैकेज को खोजने के लिए उदाहरण

https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=contents&keywords=goocanvas.pc

रिटर्न libgoocanvas-देव

brew searchlibgoocanvas-dev या libgoocanvas के लिए कोई परिणाम नहीं है, लेकिन इसमें एक goocanvas पैकेज है।

आप एक कमांड ineedको इस प्रकार परिभाषित कर सकते हैं कि debian.org की सूची का उपयोग करके वापस आ जाएगी ineed goocanvas.pc:

ineed() {
echo -en $(echo \
    $(curl -s "https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=contents&keywords=$1") \
       | sed 's%</*tr>%\\n%g') \
    | grep 'class="file"' \
    | sed 's/<[^>]*>//g' \
    | column -t \
    | grep --color -i -w "$1"
}

0

हालाँकि brewकिसी विशिष्ट फ़ाइल की खोज करने के लिए एक अंतर्निहित कमांड नहीं है , आप उत्तर पाने के लिए brew listऔर संयोजन का उपयोग कर सकते हैं brew list <formula>। इसमें कुछ समय लगता है, लेकिन यदि आप कुछ सफाई कर रहे हैं और इस तरह के प्रश्न का उत्तर एक से अधिक बार देना है, तो आप वह कर सकते हैं जो मैंने कभी-कभी किया है: पैकेज द्वारा फाइलों की एक सूची बनाएं:

#!/bin/sh
# make a catalog of Homebrew-installed packages by package
brew list |\
  while read formula; do
    brew list $formula |\
    while read file; do
      echo -e "$formula\t$file" # need -e to expand \t
    done
done

यदि आप इस स्क्रिप्ट के आउटपुट को किसी फ़ाइल में रीडायरेक्ट करते हैं, तो आप इसका उपयोग उस पैकेज की खोज के लिए कर सकते हैं जो ब्याज की फ़ाइल प्रदान करता है।


यह अच्छा है, लेकिन यह वर्तमान में स्थापित पैकेज खोजता है। प्रश्न उन खोज पैकेजों के बारे में पूछ रहा है जो स्थापित नहीं हैं
बुरहान अली

-1

यहाँ binइस उद्देश्य के लिए मेरी निर्देशिका में एक-लाइनर है :

$ cat ~/bin/brewpkg

#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.