0

我真的很喜欢家酿。然而,在我了解神奇的 OS X 包管理器之前,我一直遇到我安装的东西的问题。

我得到的是:

Error: The linking step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link [name]'

这当然也失败了。也许我遗漏了一些东西——我觉得这个问题一定是在某个地方问过的,但我找不到。卸载应用程序的 Homebrew 版本,然后brew link在其上运行也会失败(因为没有桶/usr/local/Cellar)。

这是公式编写者的问题,而不是 Homebrew 本身的问题吗?似乎通过 Homebrew 提供的大部分软件也不是具有简单卸载过程的软件,这可能是问题的一部分。

只需删除初始(Homebrew 前)安装时放置的文件,我就可以开始工作。这非常耗时,我希望有一些更自动化的东西。

4

1 回答 1

0

(您显然不能像标题所暗示的那样“将预安装的应用程序/软件包转换为 Homebrew”;您必须删除它们并安装 brew 替代品。鉴于您的问题文本,您显然已经知道这一点,所以我并不是说这是光顾之类的,以防其他读者感到困惑。)

真的没有什么可以自动做你想做的事。如果你仔细想想,真的不可能——如果你在没有包管理器的情况下安装了一些东西,那么就没有安装过程的记录,所以没有办法自动卸载它。

在某些情况下,您只需 cd 进入源代码并“进行卸载”即可。在其他情况下,您可以查看 brew 将安装的内容,并假设您的 pre-brew 安装创建了完全相同的文件集。(我想你甚至可以用脚本自动化它。)安装至少会告诉你它失败的原因,以及你必须删除哪些文件(你也可以用脚本自动化——尽管如果你只完全删除那些你经常会留下很多配置/等信息的文件)。

但无论如何,如果您希望 brew 和非 brew 的东西共享 /usr/local (这通常有效,并且似乎是官方推荐的),您必须手动处理冲突,因为它们出现了。

有关更多信息,请参阅常见问题解答(如果您还没有)。

如果你想避免痛苦,有几种方法可以做到这一点。以下是选择:

  1. 清除 /usr/local 中的所有内容,重新安装 brew,然后重新安装您需要的所有内容(最好使用 Homebrew 版本——如果它们不存在,您通常可以非常轻松地创建自己的公式)。您可能想要备份旧的 /usr/local,以防万一您以后发现“您需要的一切”不完整……这显然是最干净的解决方案,但这意味着重复您已经完成的工作。

  2. 将 /usr/local 重命名为 /opt/oldusrlocal 之类的名称,将其放在 /usr/local 之后的路径上,然后让 Homebrew 完全管理 /usr/local。这可能会破坏一些在构建/安装过程中存储绝对路径的包,这意味着您必须重新构建它们(这是切换到 brew 版本的好机会),而且它看起来很hacky,但它工作得很好。

  3. 像上面一样重命名 /usr/local,不要把它放在你的路径中,当你发现你需要它时,手动将东西符号链接到 /usr/local 中。

  4. 在 /usr/local 之外的某个地方安装 brew(并将其放在 /usr/local 之前的路径上)。正如 Homebrew FAQ 所解释的那样,有一些公式(以及 egss/gems/etc. 之外的公式)不能正常工作(因为几乎每个人都针对 /usr/local 进行测试),但它是可行的。

于 2012-07-16T18:53:03.427 回答