Como faço para reinstalar todos os pacotes instalados com o Homebrew?

7

Recentemente, tive um problema em que todos os meus binários vinculados foram removidos de /usr/local/bin/ . Felizmente, a maioria deles eram apenas links dinâmicos para binários instalados com Homebrew, então depois de reinstalar o Homebrew eu preciso recuperá-los. Existe uma maneira de forçar a reinstalação de todos os pacotes e binários instalados com o Homebrew? Talvez canalizar a saída de brew list em brew reinstall ?

    
por JAL 22.10.2016 / 16:41

4 respostas

20

É tão simples assim:

$ brew list | xargs brew reinstall

Você não precisa desinstalar nada, porque ao fazer isso você pode perder suas configurações e configurações.

    
por 02.11.2016 / 04:48
1

Eu tive uma necessidade disso depois de atualizar para o OSX High Sierra. A maioria dos pacotes de cerveja estava falhando na forma de dylibs ausentes. Acabou escrevendo um rápido & roteiro sujo que remove o & substitui um de cada vez, ignorando as dependências, para que você não force as purgas em massa. Você precisa consertar cada ponto de parada, mas continua de onde parou, então não é muito doloroso.

YMMV como sempre

#!/bin/bash -e
if [ "$1" == "-h" ] ; then
    cat <<EOT
    Remove & reinstall all brew owned packages
    Fail on error to allow manual fixing
    Accept package name as arg1 to spec pick up point.
        $0 [<pickup point>]
    eg:
        $0
    or
        $0 ctags
            where <ctags> is the package to start from
EOT
    exit 1
fi

for l in $(brew list) ; do
    if [ "$1" ] ; then
        if [[ $l < $1 ]] ; then
            echo "skipping $l"
            continue
        fi
    fi
    echo "Remove $l"
    brew uninstall --ignore-dependencies $l 
    echo "Re-add $l"
    brew install $l
done
    
por 15.11.2017 / 01:16
0

Você pode remover todos os pacotes primeiro e depois instalar tudo novamente ....

$ brew tap beeftornado/rmtree && brew install brew-rmtree
$ brew rmtree <package>
    
por 22.10.2016 / 17:18
0

Algo como

cd /tmp
brew list -1 >brew-list
# do whatever is necessary to remove packages
while read package; do
    brew install $package
done <brew-list

deve fazer o truque (a menos que você tenha instalado a partir de toques, então pode precisar de mais algum trabalho).

    
por 22.10.2016 / 17:29