OS Xをアップグレードした後、Homebrewのインストールを修正するにはどうすればよいですか?


25

コンテキスト

私の雇用主は、開発作業のためにMacBook Proをくれました。ただし、私の研究グループで行っている開発作業のほとんどはLinuxプラットフォーム向けであり、ポリシー上の理由から、このラップトップに仮想化ソフトウェアをインストールすることはできません。Homebrewはこれらのツールをインストールする良い方法のように見えます。特に、Rubyを使用しているため、MacPortsはTclを使用しているため、ハッキング可能に見えないため、非常にハッキングされやすいためです。ただし、Homebrewはシステムライブラリに依存しており、セキュリティ上の理由から、私の雇用者はいつでもシステムをアップグレードできます(そして、私が聞いたところから頻繁にシステムをアップグレードします)。OS XのアップグレードはHomebrewを破壊すると聞いています。(たとえば、https://stackoverflow.com/questions/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lionを参照してください)。

質問

OS Xのアップグレード後にHomebrewインストールを修正するにはどうすればよいですか?自動化された方法で削除できる限り、削除して最初からやり直しても構いません。(たとえば、PuppetとHomebrewプロバイダーを使用して、シェルスクリプトの実行時に自動的に構築される構成をスクリプト化します。)私はあらゆるところをグーグルで検索しており、この質問に対する答えを見つけることができません。

回答:


8
brew update

Homebrewインストールを更新します。エラーがある場合は、エラーを報告する必要がありますbrew doctor。別の方法で修正してみてください。アンインストールスクリプトは次のように使用できます。

#!/bin/sh
# Just copy and paste the lines below (all at once, it won't work line by line!)
# MAKE SURE YOU ARE HAPPY WITH WHAT IT DOES FIRST! THERE IS NO WARRANTY!

function abort {
  echo "$1"
  exit 1
}

set -e

/usr/bin/which -s git || abort "brew install git first!"
test -d /usr/local/.git || abort "brew update first!"

cd `brew --prefix`
git checkout master
git ls-files -z | pbcopy
rm -rf Cellar
bin/brew prune
pbpaste | xargs -0 rm
rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
test -d Library/LinkedKegs && rm -r Library/LinkedKegs
rmdir -p bin Library share/man/man1 2> /dev/null
rm -rf .git
rm -rf ~/Library/Caches/Homebrew
rm -rf ~/Library/Logs/Homebrew
rm -rf /Library/Caches/Homebrew

そして、homebrewを再度インストールします。これらはすべてパペットを使用して設定可能であると確信しています。


7

単にアンインストールするのではなく、すべてのパッケージを再構築する必要があるかどうか疑問に思っているかもしれません。その場合、この答えが示すように、それは一般に問題ではないと理解しています

特にOS X MavericksとXcode 5に変更するときに問題が発生しました。インストールしたすべてのパッケージを再リンクする必要がありました。スクリプトを次に示します。

#!/bin/bash
FORMULAS=(`brew list`);
for FORMULA in "${FORMULAS[@]}"
do 
    echo "brew unlink $FORMULA" && echo "brew link $FORMULA";
    OUTPUT=`brew unlink $FORMULA`;
    echo $OUTPUT;
    OUTPUT=`brew link $FORMULA`;
    echo $OUTPUT;
done

出力に注意してください、いくつかの式が必要になります--forceのためlinkのステップ。

それでもうまくいかない場合は、Mike McQuaidの次のコマンドシリーズを試してください。

brew list > brew-list.txt
brew uninstall $(cat brew-list.txt)
brew install $(cat brew-list.txt)

そこ今でrebuild自作のコマンドは、それは、現在の依存関係を解決しません。


1
新しいMacにMavericksをクリーンインストールし、その後、他のMacからTime Machineバックアップを復元しました。Homebrewとその数式を含むすべてがインストールされたコンピューターを残しましたが、それらはすべてリンクされていませんでした。スクリプトを使用して、すべての数式を一度に再リンクし、修正しました!魅力のように動作します、ありがとう。
アレハンドロガルシアイグレシアス14

1
関連する問題では、すべてのタップをアンタップ/タップする必要がありました。そうしないと、正しいタップが既にタップされていると主張しても、brewはいくつかの式を見つけられません。for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
ジョエルプラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.