有没有快速重新链接我的自制小桶?


58

我刚刚将MacBook Air升级为Mavericks。该过程似乎已删除了几乎所有的符号链接 homebrew 投入 /usr/local/bin。当我发现缺少的东西然后我重新链接它们 brew unlink <keg> && brew link <keg> (虽然符号链接消失了, homebrew 仍然认为他们在那里所以我需要 unlink 第一)。这感觉有点低效。

我可以循环浏览所有内容 /usr/local/Cellar 但不是 一切 keg是自动链接的,我不想链接它们。所以我的下一个猜测是列出每一个 关联 小桶和重新链接(使用上面的)。

是否有一些神奇的命令可以找到所有的小桶 homebrew 链接,以便我可以重新链接他们?


我使用迁移助手将旧的Mac中的“一切”移动到新的,我也丢失了所有自制的符号链接。烦人。
Grav

Answers:


37

/usr/local/Library/LinkedKegs 似乎包含一个列表,好吧,链接的桶,所以这应该做的伎俩:

ls -1 /usr/local/Library/LinkedKegs | while read line; do
    echo $line
    brew unlink $line
    brew link --force $line
done

我建议你确保你有写权限 /usr/local/lib 再试一次之前。


很确定这只是让我的自制软件恢复正常运转。谢谢!
Robert Massaioli

太棒了,谢谢你:)如果你不介意的话,只是提出了一个要点,我很确定我们不是唯一一个遇到这个问题的人。 goo.gl/YTPMjh
Stone Alessandro

1
不,不要这样做 --forcebrew link 应该是足够的,并且一些桶实际上不应该链接(因为它们可能与系统库冲突),而 --force 将迫使他们联系。
Chris Jefferson

55

这个bash命令(取自 那里 )将取消链接所有已安装的公式,然后再次链接它们:

brew list -1 | while read line; do brew unlink $line; brew link $line; done

我想所有公式都需要链接,否则,无论哪种工具依赖于它们,都无法找到它们。


我不确定所有公式都需要链接。有些是 小桶只 但我不知道哪个,因为有些是作为其他人的依赖安装的。
Loop Space

4
看起来你只是得到一些警告,例如“警告:即席只是keg-only,必须与--force联系”
Grav

2
这是使用xargs的等效版本: brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow

很好用。我正在使用10.12.6 mac os
Raju yourPepe

8

除了这个问题的其他答案,您可能还需要重新安装已安装多个版本的公式( brew link 不会为你这样做)。

首先,重新链接所有公式:

brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

然后跑 brew doctor,应该抱怨并给你两个清单:

  • 具有多个版本的未链接公式
  • 仅通过原始重新链接过程错误链接的仅桶组公式。

对于具有多个版本的每个公式,运行以下命令,将“python”替换为公式名称:

brew info python  

除其他信息外,这将向您显示所有已安装的版本。选择要链接的版本(对我来说是2.7.6),然后使用 brew switch

brew switch python 2.7.6

你也想跑 brew unlink 在已链接的仅keg公式的列表(如果有)上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.