У меня недавно была проблема, когда все мои связанные двоичные файлы были удалены из /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
должен сделать трюк (если вы не установили с кранов, то это может потребовать дополнительной работы).