Получение ошибки "плохой интерпретатор" при использовании brew - программирование

Получение ошибки "плохой интерпретатор" при использовании brew

Я получаю эту ошибку, когда пытаюсь запустить любую команду brew.

Holger-Sindbaeks-MacBook-Air:~ holgersindbaek$ brew help
-bash: /usr/local/bin/brew: /usr/bin/ruby: bad interpreter: No such file or directory

У меня нет абсолютно никакой идеи о том, как исправить это и долго искать без ответа.

4b9b3361

Ответ 1

То, что вы получаете, означает, что Homebrew не смог найти интерпретатор Ruby в указанном месте.

Установите Apple Developer Kit (поставляется с Xcode), который должен быть доступен вам как дополнительная установка (или вы можете просто загрузить его с Apple). Это установит для вас интерпретатор Ruby.

Если у вас уже установлен Xcode, это означает, что происходит одна из следующих вещей:

  • У вас сломанная установка Ruby.
  • У вас более одной установки Ruby.
  • Ваша установка не была правильно настроена.

Чтобы определить, является ли это первым случаем, вы можете запустить ruby и посмотреть, есть ли у вас какой-либо ответ.

Если вы этого не сделаете, ваша установка будет нарушена, и вам нужно будет переустановить ее. Если вы это сделаете, вы запустите which ruby. Это должно дать вам абсолютный путь к исполняемому файлу Ruby. Если это не что иное, как /usr/bin/ruby, то homebrew (и куча других программ) не сможет его найти.

Если вы никогда не пытались выполнить установку Ruby, вы можете проверить, существует ли /usr/bin/ruby или нет: cat /usr/bin/ruby. Если вы получите No such file or directory, вы можете легко создать символическую ссылку на свою установку Ruby. Предполагая, что вывод which ruby на /usr/local/bin/ruby, вы создаете символическую ссылку таким образом: sudo ln -s /usr/local/bin/ruby /usr/bin/ruby и все должно быть хорошо.

Если в этом месте есть файл, вы можете запустить file /usr/bin/ruby, чтобы увидеть, является ли он реальным файлом, символической ссылкой или поврежденным файлом. Если это символическая ссылка, ваша установка должна работать, а так как это не так, возможно, это либо поврежденная символическая ссылка, либо фиктивный файл.

Вы можете исправить это, удалив сначала его (sudo rm /usr/bin/ruby), а затем создав новую символическую ссылку в нужное место (sudo ln -s /usr/local/bin/ruby /usr/bin/ruby).

Если не указано выше, вы должны проконсультироваться с командой доморощенного после чистой установки Xcode и удалить любые следы установки Ruby в вашей системе.

ИЗМЕНИТЬ

В качестве альтернативы, как указывалось другими ответами, проблема может быть вызвана плохой версией рубина в настройках Homebrew.

Быстрое исправление может быть обновлением вашего Homebrew:

cd /usr/local
git pull -q origin refs/heads/master:refs/remotes/origin/master

Если это не помогает, возможно, вы захотите, чтобы ваши руки были грязными и вручную исправили проблему, нажав

  • Редактирование brew.rb из /user/local/Library/brew.rb
  • Изменение /1.8/ до /Current/ в первой строке, что приведет к тому, что хеш-банд укажет на текущую версию Ruby как исполнитель

Если это также не поможет, вы также можете изменить проверку MACOS и изменить ее с 10,5 до 10, чтобы избежать позорной ошибки "Домашний зародыш требует Leopard или выше".

ОТКАЗ

Благодарим других участников в ответах ниже и их комментаторах. Я не совершаю плагиат, просто объединяю ответы в одну интегрированную статью, чтобы помочь другим.

Ответ 2

Я получил эту ошибку (почти то же самое):

/usr/local/bin/brew:/usr/local/Library/brew.rb:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: плохой интерпретатор: Данный файл или каталог отсутствует /usr/local/bin/ brew: строка 26:/usr/local/Library/brew.rb: Undefined error: 0

и фиксируется следующим решением:

  • Откройте brew.rb:

    $ sudo vim /usr/local/Library/brew.rb
    
  • Измените первую строку 1.8 на Current:

    До:

    #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0
    

    После:

    #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
    

Тогда brew работает для меня. Надеюсь, что это поможет, если кто-нибудь другой получит эту проблему.:)


Если вы получили сообщение об ошибке

Для Homebrew требуется Leopard или выше. Для поддержки тигра см. https://github.com/mistydemeo/tigerbrew

измените проверку MACOS с <10.5 на <10.

Совет от @TimCastelijns:

10.5 не работает, потому что для сравнения оно больше 10.10 (.1 против 5). Я добавил проверку (and MACOS_VERSION != 10.10) вместо снижения с 10.5 до 10.

Ответ 3

Fix:

sudo gem install cocoapods

Ответ 4

Это произошло потому, что мне нужно было обновить brew - в обновленной версии, в которой он уже использует Current ruby ​​

cd /usr/local
git pull -q origin refs/heads/master:refs/remotes/origin/master

Это позволило решить проблему

Ответ 5

Чтобы избежать чрезмерного упрощения, попробуйте запустить

gem install bundler

Я переводил свою среду Ruby из RBENV в RVM, и она работала для меня.

Ответ 6

Ни одно из вышеперечисленных не работало для меня, поэтому я продолжал просматривать и нашел этот ответ, fooobar.com/questions/49803/... который исправил для меня brew. Он говорит на шаге 1, чтобы установить инструменты командной строки XCode 6, но не говорит, как; используйте эту команду:

xcode-select --install

Ответ 7

После обновления до macOS High Sierra исправьте его с помощью следующих команд:

sudo gem установить cocoapods

Ответ 8

В моем случае кажется, что fastlane установлен неправильно с brew install fastlane Система brew install fastlane не brew install fastlane правильный путь к fastlane. Я исправил это с помощью alias fastlane=~/.fastlane/bin/fastlane

Ответ 9

У меня возникла та же проблема при обновлении до MacOSX High Sierra и использовании Xcode 9 с этим. High Sierra обновляет ruby gem до версии 2.3, но команда xcpreety в Xcode 9 все еще использует Ruby 2.0, который сейчас не может найти и дает плохой интерпретатор. Просто зайдите в терминал и бегите

sudo gem install xcpretty

Перезапустите Xcode и сделайте новую чистую сборку, она работает для меня. Надеюсь, поможет!!!