OS X 中的 Homebrew 错误。错误的解释器:符号链接层级过多。未定义错误:0

OS X 中的 Homebrew 错误。错误的解释器:符号链接层级过多。未定义错误:0

几个星期以来,我一直在寻找这个问题的答案,虽然我见过类似的问题,但我没有发现与我遇到的错误完全相同的问题。我试过卸载并重新安装 Homebrew,但无济于事。我不是 bash 脚本和命令行领域最有经验的用户,所以请对我宽容一点。

我正在运行 Mac OS X 10.10.1 Yosemite。

无论如何,每当我尝试运行任何类型的 brew 命令时,都会出现以下错误-

PJs-iMac:~ peterjohnjoseph$ brew doctor
/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby: bad interpreter: Too many levels of symbolic links
/usr/local/bin/brew: line 28: /usr/local/Library/brew.rb: Undefined error: 0

我的 usr/local/bin/brew 脚本如下所示 -

    #!/bin/sh

chdir () {
  cd "$@" >/dev/null
}

BREW_FILE_DIRECTORY=$(chdir "${0%/*}" && pwd -P)
export HOMEBREW_BREW_FILE="$BREW_FILE_DIRECTORY/${0##*/}"

BREW_SYMLINK=$(readlink "$0")
if [ -n "$BREW_SYMLINK" ]
then
    BREW_SYMLINK_DIRECTORY=$(dirname "$BREW_SYMLINK")
    BREW_FILE_DIRECTORY=$(chdir "$BREW_FILE_DIRECTORY" &&
                          chdir "$BREW_SYMLINK_DIRECTORY" && pwd -P)
fi

BREW_LIBRARY_DIRECTORY=$(chdir "$BREW_FILE_DIRECTORY"/../Library && pwd -P)

# Users may have these set, pointing the system Ruby
# at non-system gem paths
unset GEM_HOME
unset GEM_PATH

BREW_SYSTEM=$(uname -s | tr "[:upper:]" "[:lower:]")
if [ "$BREW_SYSTEM" = "darwin" ]
then
    exec "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
else
    exec ruby -W0 "$BREW_LIBRARY_DIRECTORY/brew.rb" "$@"
fi

另一件事是,我在 /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby 文件夹中发现了一些对我来说似乎不正确的东西(但我可能是错的)。

首先,单击 ruby​​.framework/Versions 时,内容是 1.8 的别名(如果 2.0 是随 os x 10.10 一起安装的默认别名,是否应该在那里?别名还说找不到原始项目)、2.0 文件夹和“Current”别名,单击时也说找不到原始项目。在 2.0 文件夹中,“Current”别名也找不到原始项目。

这些都有什么问题吗?这和我收到 Homebrew 错误的原因有什么关系吗?这可能非常简单,我只需要从文件中删除一行,也可能更大,并涉及我上面发现的潜在问题。任何帮助都将不胜感激。我这周需要安装一些东西,所以我正在尽我所能来解决这个问题。我会给你任何你需要的信息,以帮助你帮助我。

谢谢,PJ

编辑:1/9/15 1:29,回应 David X-

谢谢 David,我很乐意发布结果。感谢您尝试一切。-

PJs-iMac:~ peterjohnjoseph$ ls -l /usr/local/Library/brew.rb
-rwxr-xr-x  1 peterjohnjoseph  admin  5284 Jan  9 10:06 /usr/local/Library/brew.rb

PJs-iMac:~ peterjohnjoseph$ ls -l /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
ls: /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby: Too many levels of symbolic links

PJs-iMac:~ peterjohnjoseph$ head -1 /usr/local/Library/brew.rb
#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

PJs-iMac:~ peterjohnjoseph$ ls -ld /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
ls: /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby: Too many levels of symbolic links

PJs-iMac:~ peterjohnjoseph$ ls -l /System/Library/Frameworks/Ruby.framework/Versions/
total 16
lrwxr-xr-x  1 root  wheel    7 Dec 30 08:44 1.8 -> Current
drwxr-xr-x  8 root  wheel  272 Dec 30 08:46 2.0
lrwxr-xr-x  1 root  wheel    3 Dec 25 01:21 Current -> 1.8

我假设这意味着 Ruby.framework/Versions/Current/usr/bin/ruby 是导致此问题的原因。我不知道您或其他任何人是否可以解决这个问题,但就像我说的,任何事情都会受到赞赏。

我不知道这是否有帮助,但就像我之前说的那样,/System/Library/Frameworks/Ruby.framework/Versions/ 文件夹只包含 3 个项目;1.8 的别名(声称找不到原始版本)、2.0 的文件夹和“Current”的别名(在尝试显示原始版本时也表示找不到原始版本)。

再次感谢。

答案1

['官方'答案总结了问题评论中的一些调试]

事实证明/System/Library/Frameworks/Ruby.framework/Versions/Current,本来应该是指向最新版本(2.0)的符号链接,但却是指向 的符号链接1.8,而由于某种原因,它本身又是指向 的符号链接Current,这导致了试图解析符号链接的无限循环,而不是更有用的“1.8 丢失或损坏”错误。

解决方案是修复再次Current指向2.0

$ cd /System/Library/Frameworks/Ruby.framework/Versions/
$ ln -sfT 2.0 Current

相关内容