406 votes

Désinstaller / supprimer un paquet Homebrew, y compris toutes ses dépendances

J'ai un Homebrew que je souhaite désinstaller/supprimer avec toutes ses dépendances, en ignorant les paquets dont dépendent d'autres paquets (alias Retrait des paquets en cascade dans le jargon des gestionnaires de paquets).

par exemple Désinstaller le paquet a qui dépend des paquets b & c où le paquet d dépend également du paquet c . Le résultat devrait désinstaller les deux a & b , en sautant c .

Comment puis-je faire ça ?

Il doit y avoir un moyen de désinstaller un paquet sans laisser des informations inutiles. junk derrière.

10 votes

N'est-ce pas ce que tout gestionnaire de paquets, digne de ce nom, devrait faire en sortie de boîte ? ! LOL

3 votes

A partir de 2021, brew autoremove est ce que vous recherchez :

0voto

freytag Points 864

La réponse de @jfmercer doit être légèrement modifiée pour fonctionner avec le brew actuel, car la sortie de brew missing a changé :

brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install

0voto

Cyrus Points 1263

Légèrement amélioré ; peut fournir plusieurs paquets ; a un usage quand aucun n'est fourni.

#!/bin/bash
# Removes the package and all dependancies.

if [ $# -eq 0 ]; then
   echo "$(basename $0) <pkg> [<pkg> [...]]"
   exit 1
fi

function tree() {
    pkg="$1"
    join <(brew leaves) <(sort <(brew deps ${pkg}; echo ${pkg}))
} 

let e=0
for pkg in "$@"; do
    printf "Purging %s and its dependencies...\n" "${pkg}"
    deps=( $(tree ${pkg}) )
    while (( ${#deps[@]} > 0 )); do
        brew rm "${deps[@]}"
        deps=( $(tree ${pkg}) )
    done
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X