我真的很喜欢Homebrew。但是,我一直遇到一个问题,我在之前安装了我了解了神奇的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之前)安装所放置的文件来获得一些工作。这只是非常耗时,我希望有一些更自动的东西。
答案 0 :(得分:0)
(你显然不能像你的标题所暗示的那样“将预先安装的应用程序/软件包转换为Homebrew”;你必须删除它们并安装brew替换品。鉴于你的问题文本,你显然已经知道这一点,所以我不是说这是光顾或任何东西,以防其他读者感到困惑。)
没有什么能自动完成你想做的事情。如果你考虑一下,真的不可能 - 如果你安装了没有包管理器的东西,就没有安装部分的记录,所以无法自动卸载它。
在某些情况下,您可以直接进入源代码并“进行卸载”。在其他情况下,您可以查看brew将安装的内容,并假设您的预酿造安装创建了完全相同的文件集。 (你甚至可以使用脚本自动化它。)安装至少会告诉你它失败的原因,以及你必须删除哪些文件(你也可以使用脚本自动执行 - 尽管如果你只删除了那些文件你经常留下很多配置/等信息。
但无论如何,如果你想要brew和非brew的东西分享/ usr / local(这通常是有效的,似乎是官方推荐的),你必须手动处理冲突,因为它们出现了。
有关详细信息,请参阅the FAQ(如果您还没有)。
如果你想省去痛苦,有几种方法可以做到这一点。以下是选择:
擦除/ usr / local中的所有内容,重新安装brew,然后重新安装所需的一切(理想情况下使用Homebrew版本 - 如果它们不存在,您通常可以非常轻松地创建自己的公式)。您可能想要备份旧的/ usr / local,以防您以后发现“您需要的一切”不完整......这显然是最干净的解决方案,但这意味着重复您已经完成的工作。
将/ usr / local重命名为/ opt / oldusrlocal,在/ usr / local之后将其放在路径上,然后让Homebrew完全管理/ usr / local。这可能会破坏在构建/安装期间存储绝对路径的一些软件包,这意味着您将不得不重建它们(这是切换到brew版本的好机会),而且看起来非常hacky,但它运行良好。
如上所述重命名/ usr / local,不要将它放在路径中,并在发现需要时手动将符号链接到/ usr / local。
在/ usr / local之外的某处安装brew(并将其放在/ usr / local之前的路径上)。有一些公式(以及外部的egss / gems /等)不能正常工作(因为几乎每个人都对/ usr / local进行测试),正如Homebrew FAQ解释的那样,但它是可行的。