Hangi demleme paketinin belirli bir dosya sağladığını nasıl belirleyebilirim?


16

Hangi brewpaketin belirli bir dosya sağladığını anlamanın bir yolu var mı ( apt-fileUbuntu veya pkgfileArch gibi)?

Hangi yerel olarak yüklü paket benim sistemimde bir dosya sahibi sorgulama hakkında konuşmuyorum, ben ( /usr/local/lib/libboost_python.dylibbelirli olmak üzere) yüklü gereken belirli bir dosya var ve hangi uzak paket bu dosyayı sağlayacak bilmek istiyorum.


Dosyayı boostyapılandırdığınız sürece sağlandığı anlaşılıyor --with-python. Hangi dosyaların hangi dosyalar tarafından sağlandığını sorgulamanın bir yolu olup olmadığını bilmek güzel olurdu ...
mgalgs

FWIW boost-pythonbunun yerine artık sağlanıyor .
Tim Smith

Yanıtlar:


8

Yok. Homebrew'daki hiçbir şey, bir paketin yüklemesine izin verilen veya yüklenmesi beklenen dosyaların listesini tutmaz.


4

Bu belirtildiği gibi cevap yapabileceğiniz ls -l /usr/local//lib/whateverve nereye symlink noktalarını görüyoruz.


Veyals -l $(which somecommand)
mivk

4

Birinin bir dosya sağlayabilecek genel homebrew paketlerini bulmasına izin veren apt-search gibi bir araç olmasa da , birçok demleme paketi bir linux veya unix muadili üzerine kuruludur. Gerekli paketi bulmak için Debian paketi web sitesinde arama yapabilirsiniz.

Goocanvas.pc dosyasını sağlayan paketi bulma örneği

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

Libgoocanvas-dev döndürür

brew searchlibgoocanvas-dev veya libgoocanvas için hiçbir sonucu yoktur, ancak goocanvas paketi vardır.

ineedDebian.org'dan bir liste döndürecek bir komutu aşağıdaki gibi tanımlayabilirsiniz 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

brewBelirli bir dosyayı aramak için yerleşik bir komut olmamasına rağmen , yanıtı almak brew listve brew list <formula>almak için bir kombinasyon kullanabilirsiniz . Biraz zaman alır, ancak bazı temizleme işlemleri yapıyorsanız ve bu tür bir sorguyu bir kereden fazla cevaplamanız gerekiyorsa, bazen yaptığım şeyi yapabilirsiniz: pakete göre bir dosya kataloğu yapın:

#!/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

Bu komut dosyasının çıktısını bir dosyaya yönlendirirseniz, ilgili dosyayı sağlayan paketi aramak için kullanabilirsiniz.


Bu iyi, ancak şu anda yüklü paketleri arar. Soru, kurulu olmayan arama paketlerini sormaktır.
Burhan Ali

-1

İşte bintam olarak bu amaçla dizinimde bulunan tek astar :

$ cat ~/bin/brewpkg

#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.