У меня недавно была проблема, когда все мои связанные двоичные файлы были удалены из /usr/local/bin/ .  К счастью, большинство из них были просто динамическими ссылками на двоичные файлы, установленные с Homebrew, поэтому после переустановки Homebrew мне нужно вернуть их обратно.  Есть ли способ принудительно переустановить все установленные пакеты и двоичные файлы с помощью Homebrew?  Может быть, передать вывод brew list Brew в brew reinstall?
4 ответа
Это так просто:
$ brew list | xargs brew reinstall
Вам не нужно ничего удалять, потому что это может привести к потере настроек и настроек.
Я столкнулся с необходимостью после обновления до OSX High Sierra. У большинства пакетов для варки не было дилибов. Закончилось написание быстрого и грязного скрипта, который аккуратно удаляет и заменяет по одному, игнорируя зависимости, поэтому вы не выполняете принудительную чистку. Вам нужно исправить каждую точку остановки, но она поднимается с того места, где остановилась, поэтому это не слишком больно.
YMMV как всегда
#!/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
Вы можете сначала удалить все пакеты, а затем снова установить все ....
$ brew tap beeftornado/rmtree && brew install brew-rmtree
$ brew rmtree <package>
Что-то вроде
cd /tmp
brew list -1 >brew-list
# do whatever is necessary to remove packages
while read package; do
    brew install $package
done <brew-list
должен сделать трюк (если вы не установили с кранов, то это может потребовать дополнительной работы).
