【问题标题】:Converting pre-installed apps/packages to Homebrew将预安装的应用程序/包转换为 Homebrew
【发布时间】:2012-07-15 14:18:39
【问题描述】:

我真的很喜欢 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 之前)安装时放置的文件,我就可以开始工作了。这非常耗时,我希望有一些更自动化的东西。

【问题讨论】:

    标签: macos command-line installation uninstallation homebrew


    【解决方案1】:

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

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

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

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

    请参阅the FAQ(如果您还没有)了解更多信息。

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

    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 进行测试),但这是可行的。

    【讨论】:

    • 感谢您的冗长回复。我查看了 Homebrew 的常见问题解答,但似乎找不到关于这个问题的明确答案。我还阅读了一些关于“make uninstall”路线的信息——我是否必须从安装软件的目录中运行make uninstall?我不能很好地将它作为命令行的参数附加。
    • 这取决于项目,但通常您必须从安装它的源目录运行它。如果您不再拥有它,那么使用相同的参数和环境变量重新执行 ./configure 应该足以让卸载工作。并非每个项目都有卸载目标,而且并非所有项目都以完全相同的方式工作,但这至少适用于许多项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多