1

Я искал ответ на эту проблему уже несколько недель, и хотя я видел подобные проблемы, ни одна из найденных мной проблем не была похожа на ошибку, с которой я столкнулся. Я пытался удалить и переустановить 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 и псевдоним "Текущий", который при щелчке говорит, что оригинальный элемент также не может быть найден. Внутри папки 2.0 псевдоним "Текущий" также не может найти оригинальный элемент.

Отключено ли это, и может ли это быть связано с тем, почему я получаю ошибку Homebrew? Это может быть очень просто, и мне просто нужно удалить строку из файла, или она может быть больше и включать потенциальные проблемы, которые я обнаружил выше. Любая помощь будет принята с благодарностью. У меня есть кое-что, что нужно установить на этой неделе, поэтому я стараюсь изо всех сил, чтобы понять и решить это. Я дам вам любую информацию, которая понадобится вам, чтобы помочь мне.

Спасибо пи

Изменить: 1/9/15 в 1:29 в ответ на Дэвида X-

Спасибо Дэвид, я был бы рад опубликовать результаты. Спасибо, что попробовали что-нибудь вообще. -

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 и псевдоним "Текущий" (который также говорит, что оригинал не может быть найден при попытке показать оригинал).

Еще раз спасибо.

1 ответ1

0

[«Официальный» ответ, чтобы подвести итог некоторой отладки в комментариях к вопросу]

Оказалось, что /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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .