1

短いバージョン: 私は自分のbrewのインストールをめちゃくちゃにしてしまったと思います.どうすればいいのかわかりません.

ロングバージョン…

私はルビーをインストールしようとして一日を始めました:

brew install ruby

これはかなり単純に思えました。すぐにこのエラーに遭遇しました:

Error: Cannot write to /usr/local/Cellar

brew doctor を実行した後、フォームのエラーの長いリストを発見しました

Warning: /usr/local/<dir> isn't writable.
This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a brew tries to write a file to this directory, the
install will fail during the link step.

最終的に、私はこれを巨大な chmod で解決しました。

sudo chmod -R 777 /usr/local

トリックを行うように見えました。

そこから、簡単な「brew update」を試してみました。これにより、新しい問題が発生しました。

error: Your local changes to the following files would be overwritten by merge:
<list of about 100 files>
Please, commit your changes or stash them before you can merge.

他に何をすべきかわからないので、「git commit」を実行し、変更を正常にコミットしました (それらが何であったかわかりません)。brew update とマージするときに変更を上書きするだけで簡単だと思いました...

...そして、それは間違いなくそうではありませんでした。brew update からの出力例を次に示します。

Auto-merging share/man/man1/brew.1
Auto-merging Library/Homebrew/version.rb
CONFLICT (content): Merge conflict in Library/Homebrew/version.rb
Auto-merging Library/Homebrew/test/testing_env.rb
Auto-merging Library/Homebrew/test/test_versions.rb
CONFLICT (content): Merge conflict in Library/Homebrew/test/test_versions.rb
Auto-merging Library/Homebrew/test/test_requirement.rb
Auto-merging Library/Homebrew/test/test_formula_validation.rb
CONFLICT (modify/delete): Library/Homebrew/test/test_dependency_expansion.rb deleted in HEAD and modified in 9e3aa8925cf4b03a5b1fda13971dde84e1162c41.

現在、brew のすべてのファイルには、"<<<<<<< HEAD" と ">>>>>>> [hashcode]" が散らばっています。これを修正するために、ここで見つけたいくつかのコマンドを実行しました。

git checkout --theirs *
git add .
git merge

私は git の経験があまりありませんが、これはひどい考えだったと確信しています。Git は、マージする変更はないと確信していますが、「<<<<<<< HEAD」などのタグはすべてコード内に残っています。brewのベースコードが読めないので、「brew doctor」や「brew update」すら実行できません。

結論...

最良のアイデアは、brew をアンインストールしてから再インストールすることだと思います。ただし、brew のすべてのインストールを再インストールする必要があります。そして、「醸造リスト」を実行できないため、これらが何であるかわかりません。すべてのリモート変更を受け入れる方法はまだありますか? 今何ができますか?

4

1 に答える 1

1

chmod -R 777セキュリティ上非常に悪いです。これにより、その下にあるすべてのファイルとディレクトリが誰でも読み取り可能になり、書き込み可能になり、実行可能になります。つまり、誰もが好きなことを行うことができます。

ほとんどの場合、ディレクトリには775-のアクセス許可が必要であり、ファイルはorの755いずれかである必要があります。664644/usr/local/bin755

への再帰的な変更/usr/local/は、ステータス/コミットにリストされているすべてのファイルにアクセス許可の変更があったことを意味します。大したことではないように見えるかもしれませんが、git の世界とシステムのセキュリティを意味します。

これを元に戻す唯一の方法は、各ファイル/ディレクトリのアクセス許可をリセットしてから/usr/local/、コミットを完全に削除することですgit reset --hard origin/master

brew は他のアプリケーションとまったくうまく動作しないため、本当に必要でない限り、可能な限り使用を避けることをお勧めします。

于 2013-06-19T18:08:17.850 に答える