最近、リンクされたすべてのバイナリが/usr/local/bin/
から削除されるという問題がありました。幸いなことに、これらのほとんどはHomebrewと共にインストールされたバイナリへの動的リンクにすぎなかったため、Homebrewを再インストールした後、それらを元に戻す必要があります。インストール済みのすべてのパッケージとバイナリをHomebrewで強制的に再インストールする方法はありますか?たぶんbrew list
の出力をbrew reinstall
にパイプしますか?
それはそれと同じくらい簡単です:
$ brew list | xargs brew reinstall
アンインストールする必要はありません。アンインストールすると、設定や構成が失われる可能性があります。
インストールされた醸造物だけでなくcasksおよびtapsも保持するために、
$ brew bundle dump --describe --global
$ brew bundle install --global
最初のコマンドは~/.Brewfile
は2回目の呼び出しで再度読み込まれます。次のようになります。
$ cat ~/.Brewfile
tap "buo/cask-upgrade"
tap "homebrew/cask-fonts"
brew "direnv"
brew "python"
cask "0xed"
cask "alacritty"
発行してください
$ brew bundle -h
for 詳細bundle
コマンド。
OSX High Sierraにアップグレードした後、これが必要になりました。ほとんどのbrewパッケージは、dylibが見つからないために失敗していました。一括削除を強制しないように依存関係を無視して、一度に1つずつきれいに削除および置換する迅速でダーティなスクリプトを作成することになりました。あなたは各停止点を修正する必要がありますが、それはそれが中断したところをピックアップするので、それほど痛くないです。
いつものように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
トリックを実行する必要があります(タップからインストールした場合を除き、さらに作業が必要になる場合があります)。