9 votes

Trouver les exécutables associés à Homebrew Formula

Certaines formules Homebrew ont des noms qui ne correspondent à aucune des commandes installées (par ex, coreutils , speech-tools ), d'autres formules fournissent une commande qui correspond au nom, mais en fournissent également d'autres à côté (par ex, lua ).

Existe-t-il un moyen simple de déterminer les commandes associées à une formule donnée ? Idéalement sous la forme d'un brew <arg> commande avant L'installation, mais même un shell script que je pourrais utiliser après l'installation m'aiderait.

Je me suis dit que je pourrais peut-être trouver cette information avec un brew link --dry-run <formula> mais cela ne fait que m'avertir que la formule est déjà liée (même avec la fonction --overwrite o --force ajouté à la commande). Je ne veux pas avoir à me déconnecter à chaque fois que je veux voir les commandes, donc cette solution ne me semble pas utile.

13voto

Timothée Boucher Points 687

En tant que Réponse de bmike souligne qu'à part fouiller dans les sources des projets pour déterminer les exécutables qu'ils installent, il n'y a pas de bon moyen de déterminer les commandes qui accompagnent une formule donnée avant de l'installer.

Après l'installation d'une formule, l'exécution de

brew unlink --dry-run formula | grep "$(brew --prefix)/bin"

est une option viable maintenant que l --dry-run est disponible pour brew unlink .

Avant de l'ajouter, j'ai écrit un commande externe appelé brew executables qui présente encore quelques avantages par rapport à ce qui précède (principalement au niveau du formatage et de la gestion un peu différente de certains liens). J'en inclurai une version simplifiée (et probablement non fonctionnelle, en raison de l'absence de certaines affectations de variables) ici :

version_in_use=$(echo "$brew_info" | grep "$HOMEBREW_PREFIX.*\*$" | sed -e "s|.*$formula/\([^ ]*\).*|\1|i")

cd "$HOMEBREW_CELLAR/$formula/$version_in_use" 
for dir in `find . -type d -mindepth 1 -maxdepth 1 -name "bin"`; do
    for file in `find "$dir" -type f -o -type l -perm +111`
    do
            filename=$(basename $file)
            echo $filename
    done        
done

En bref, il extrait la liste des exécutables de la base de données de $(brew --prefix)/$formula/$version_in_use/bin . La version sur mon GitHub est un peu plus étoffée, avec notamment la possibilité d'identifier et d'indiquer quand il y a des commandes qui se lient les unes aux autres dans ce répertoire bin.

3voto

chollida Points 4583

J'ai écrit Homebrew-command-not-found pour faire l'inverse : obtenir une formule à partir d'un exécutable. Il n'y a pas de moyen facile d'obtenir les exécutables d'une formule comme d'autres réponses l'ont indiqué ; j'ai donc installé tous Formules Homebrew et enregistrement de tous les exécutables dans un seul fichier.

Vous pouvez trouver ici . Chaque formule a sa propre ligne avec le format suivant :

<name>: <executable-1> <executable-2> <...>

C'est aussi simple que grep ^git: executables.txt pour obtenir les exécutables installés par le git formule.

Le fichier est régulièrement mis à jour et couvre plus de 17 000 commandes pour plus de 5 000 formules de base.

0voto

Oskar Points 1242

En général, non.

Homebrew n'installe pas de reçus de paquets, ce qui est la manière dont les outils actuels décident de ce qui est installé à tel ou tel endroit de manière exhaustive et correcte.

Vous pouvez parfois utiliser brew list pour vérifier les choses, mais j'ai trouvé que la meilleure façon de vérifier le homebrew est de passer par github - qui publie le code source de tous les outils et de tous les paquets.

Mon moteur de recherche préféré a même des commandes ! pour faciliter la recherche sur github :

!gh homebrew lua

Google fait un travail décent en classant homebrew assez haut ainsi que github.

!g homebrew lua

En outre, brew info y brew home vous donnent souvent un lien direct vers la source du projet pour vérifier si vos soupçons sont fondés. Comme vous le supposez, la véritable vérification consiste à désinstaller/réinstaller et à observer. Ce n'est pas amusant, mais c'est efficace.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X