【问题标题】:Brew disabled by merge conflicts合并冲突禁用 Brew
【发布时间】:2013-06-19 17:15:41
【问题描述】:

短版:我认为我的 brew 安装搞得一团糟,我不知道该怎么办。

长版...

我开始尝试安装 ruby​​:

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 中的所有文件都散布着“>>>>>>> [hashcode]”。为了解决这个问题,我运行了一些我发现的命令here

git checkout --theirs *
git add .
git merge

我没有太多 git 经验,但我现在相当确定这是一个糟糕的主意。 Git 确信我没有要合并的更改,但所有“

结论...

我觉得最好的办法是卸载并重新安装 brew,但我必须重新安装我所有的 brew 安装。而且因为我不能运行“brew list”,所以我不知道这些是什么。还有一种方法可以让我接受所有远程更改吗?我现在能做什么?

【问题讨论】:

    标签: git homebrew git-merge merge-conflict-resolution


    【解决方案1】:

    chmod -R 777 对安全性非常不利。这使得它下面的每个文件和目录都可读可写和可执行,这意味着每个人都可以用它做他们喜欢做的事情。

    大部分目录应该有775的权限-更好的是755,文件应该是664644,除非它们是/usr/local/bin中存在的可执行文件在这种情况下,它们应该是755

    /usr/local/ 的递归更改意味着状态/提交中列出的每个文件都对其进行了权限更改,这就是 brew 抱怨的原因。可能看起来不多,但它意味着 git 的世界和系统的安全性。

    恢复这种情况的唯一方法是重置/usr/local/ 下每个文件/目录的权限,然后使用git reset --hard origin/master 完全删除您的提交

    brew 根本不能与其他应用程序很好地配合使用,我建议尽可能避免使用它,除非你真的需要。

    【讨论】:

    • 非常感谢!我对这样的系统没有太多经验(显然)。硬重置是我需要的,我会考虑重置权限
    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 2014-02-25
    • 2020-02-28
    • 2011-08-20
    • 2017-03-04
    • 2011-03-13
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多