Comment identifier le package/la formule d'un fichier donné ou une liste de tous les fichiers détenus par un package dans Homebrew?
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.
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.
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
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
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 ..)
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