web-dev-qa-db-fra.com

Comment trouver un paquet pour le fichier installé dans Brew?

Comment identifier le package/la formule d'un fichier donné ou une liste de tous les fichiers détenus par un package dans Homebrew?

39
Dustin Oprea

Pour voir tous les fichiers d'un paquet:

brew ls <package>

Pour trouver le paquet d’un fichier, regardez-le comme ceci:

ls -l /usr/local/bin/whatever

S'il a été installé par Homebrew, ce sera un lien symbolique dans /usr/local/Cellar/something, ce qui vous indiquera de quel paquet il provient.

67
Peter Eisentraut

Je viens d'écrire cette fonction sale pour vous donner le nom du paquetage brew auquel un fichier appartient:

function brew_find_pkg {
    file_to_search="$@"
    list_of_brew_pkgs=$(brew list)

    for package in $list_of_brew_pkgs; do
        brew ls $package | grep -E -q "/${file_to_search}$"
        if [ $? -eq 0 ]; then
            echo $package
            break
        fi
    done
}

Il suffit de taper cela dans le terminal. Et ensuite, trouver le paquet de bière auquel un fichier appartient, par exemple le fichier pcregrep, appelez simplement la fonction comme ceci

brew_find_pkg pcregrep

Notez que la fonction ne fonctionnera pas si vous fournissez le chemin complet du fichier.

6
GMaster

Le nom du package peut être déterminé en fonction du lien symbolique qui pointe vers le binaire (Cellar/PACKAGE/...), par exemple.

$ ls -la $(which awk) # => gawk
lrwxr-xr-x 1 kenorb 28 May 20  2015 /usr/local/bin/awk -> ../Cellar/gawk/4.1.1/bin/awk

$ ls -la $(which seq) # => coreutils
lrwxr-xr-x 1 kenorb 14 Apr  8  2015 /usr/local/opt/coreutils/libexec/gnubin/seq -> ../../bin/gseq
2
kenorb

Cette fonction fonctionne pour les commandes stockées dans le répertoire $( brew --prefix )/bin

function brew_find_pkg {

    cmds_to_search="$@"
    brew_bin=$( brew --prefix )/bin

    for cmd in $cmd_to_search ; do

        if [ -L $brew_bin/$cmd ] ; then
            \ls -l $brew_bin/$cmd |cut -f 2 -d '>'
        else
            echo "$cmd is not a brew command"
        fi
    done
}

Par exemple.: 

$ brew_find_pkg gawk gcc alskdfja
 ../Cellar/gawk/4.1.4_1/bin/gawk
 ../Cellar/gcc/5.3.0/bin/gcc
alskdfja is not a brew command
2
Aphoid

Rechercher et préfixe de brassage, (par exemple, pour l'opencv):

find `brew --prefix opencv3`/ -exec ls -l {} \;

(Veuillez noter l'utilisation judicieuse de -exec, et n'oublions jamais ceux de \; , gens .. c'est comment trouver sait que la liste d'arguments -exec est terminée ..)

1
ibisum

Les paquets Homebrew sont installés sur $ (brew --prefix)/Cellar (normalement/usr/local/Cellar).

Pour savoir à quels paquets appartient un fichier, une approche simple consiste à:

$ find $(brew --prefix)/Cellar/ | grep somefilename
0
Eduard Rozenberg