web-dev-qa-db-ja.com

Homebrewでインストールされたすべてのパッケージを再インストールするにはどうすればよいですか?

最近、リンクされたすべてのバイナリが/usr/local/bin/から削除されるという問題がありました。幸いなことに、これらのほとんどはHomebrewと共にインストールされたバイナリへの動的リンクにすぎなかったため、Homebrewを再インストールした後、それらを元に戻す必要があります。インストール済みのすべてのパッケージとバイナリをHomebrewで強制的に再インストールする方法はありますか?たぶんbrew listの出力をbrew reinstallにパイプしますか?

15
JAL

それはそれと同じくらい簡単です:

$ brew list | xargs brew reinstall

アンインストールする必要はありません。アンインストールすると、設定や構成が失われる可能性があります。

39
Albert Timashev

インストールされた醸造物だけでなく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コマンド。

2
jitter

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
1
Bruce Edge

最初にすべてのパッケージを削除してから、もう一度すべてインストールできます。

$ brew tap beeftornado/rmtree && brew install brew-rmtree
$ brew rmtree <package>
0
Donald Wu

何かのようなもの

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

トリックを実行する必要があります(タップからインストールした場合を除き、さらに作業が必要になる場合があります)。

0
nohillside