RVM находит исполняемые файлы системных гемов

Я установил RVM вместе с рубиновыми версиями. Однако, если я запускаю консоль и запускаю командный сервер rails, установку пакета и т. д., я получаю эту ошибку

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

Но если я сначала запускаю rvm use 1.9.2, то все ок. Я попытался использовать `rvm use --default 1.9.2', но ничего не изменилось. Означает ли это, что он использует рубин, отличный от тех, что в RVM? Заранее спасибо!


person gerky    schedule 17.06.2011    source источник
comment
Добавьте вывод rvm info в свой вопрос, отредактировав его.   -  person the Tin Man    schedule 17.06.2011
comment
rvm не устанавливает автоматически rails. После того, как вы установите конкретный интерпретатор Ruby, вам нужно установить для этого интерпретатора любые драгоценные камни (включая rails). Проблема, кажется, в том, что вы установили 1.9.2 и установили его по умолчанию, но никогда не устанавливали rails для этого интерпретатора.   -  person Telemachus    schedule 17.06.2011


Ответы (3)


Объяснение папок rubygems bin и PATH

Ой. У вас не было рельсов, установленных в вашем rvm ruby, но вы установили их в своей системе ruby.

Отдельные драгоценные камни, такие как rails, могут иметь каталог bin, который будет содержать исполняемые вспомогательные сценарии. Ваша система rubygems по умолчанию создает символические ссылки из вашей системы /usr/bin/ dir в папку bin гема для этих вспомогательных исполняемых файлов.

RVM предоставляет аналогичную возможность, за исключением того, что вместо того, чтобы загрязнять системный каталог /usr/bin, он просто добавляет свою папку ~/.rvm/gems/#{rvm_gemset_string}/bin к переменной окружения PATH.


Импорт системного списка Rubygems в ваши новые каталоги драгоценных камней rvm rubies

RVM по умолчанию не будет импортировать ваши драгоценные камни из вашей системной установки ruby ​​в ваши установки rvm ruby. Он делает полную чистую вилку всей системы ruby, включая rubygems (драгоценный камень «rubygems») и список драгоценных камней rubygems. Когда вы rvm install 1.9.2 как будто вы сделали совершенно новую установку всего, что использовалось с ruby.

Если вы хотите получить все системные рубиновые драгоценные камни, которые вы ранее использовали, в свой предпочтительный рубиновый rvm, попробуйте следующее:

  rvm use system
  rvm gemset export system.gems
  rvm use 1.9.2
  rvm gemset import system.gems
  #You'll now have all your system gems reinstalled to your new ruby version

Исходный ответ/редактирование от @Telemachus

Попробуйте переместить строки с исходным кодом rvm в конец вашего ~/.bash_profile или ~/.bashrc (в зависимости от того, что у вас есть):

'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function'

.

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file ...
|                 |                 ^--------------------------------\
^ Bash, not rvm;  ^/usr/bin/rails, not ~/.rvm/gems/*/bin/rails;      |
                       Some ruby leftover from a previous install in the os

У вас есть рельсы, установленные в /usr/bin, что, вероятно, находится перед путем rvm ruby ​​bin в вашей переменной bash echo $PATH, поэтому он находит установку системных рельсов (/usr/bin/rails, скрипт ruby), которая начинается так:

#! /usr/bin/ruby18

Вы должны остановить конфликт, лучший из всех возможных способов - убедиться, что каталог bin RVM находится в начале вашего PATH. Это происходит в скрипте #Load rvm environment, который вы добавили в свой ~/.bash_profile при установке rvm. Если вы установили rvm как системную библиотеку, а не только для своего пользователя, все будет по-другому.

Если вы доберетесь до этого случая, спросите @Telemachus.

Затем вам нужно убедиться, что вы установили гем рельсов в свой новый rvm ruby, как указано выше.

Приемочный тест:

Вы обнаружите, что когда вы сделали rvm use 1.9.2, тогда which ruby вернет что-то вроде ~/.rvm/rubies/1.9.2/bin/ruby, а which rails должно вернуть что-то вроде ~/.rvm/gems/*/bin/rails.

person Tim Snowhite    schedule 17.06.2011
comment
сделал mv, и это происходит Программа «рельсы» в настоящее время не установлена. Вы можете установить его, набрав: sudo apt-get install rails - person gerky; 17.06.2011
comment
после переименования я снова установил его с помощью gem install rails, и это сработало, спасибо! - person gerky; 17.06.2011
comment
Пожалуйста, ознакомьтесь с обновленным ответом, показывающим, как скопировать ваши системные драгоценные камни в rvm. - person Tim Snowhite; 17.06.2011
comment
Что касается $PATH, rvm рекомендует размещать его очень поздно (в идеале последним) в файлах запуска вашей оболочки, чтобы убедиться, что rvm установленные элементы идут первыми. Таким образом, никогда не будет необходимости mv убирать вещи с пути, как вы предлагаете. (Вы действительно должны удалить это предложение.) - person Telemachus; 17.06.2011
comment
+1 В общем, вам не нужно вообще трогать установленные в системе элементы для работы с rvm. Поэтому вместо переименования rails я думаю, что реальный ответ: (1) установить rails под rvm установленной 1.9.2 и (2) убедиться, что ваш $PATH установлен правильно (то есть с rvm элементами до элементы ОС). - person Telemachus; 17.06.2011
comment
@Telemachus отличное предложение. Я предположил, что происходит что-то странное, поскольку исполняемый файл rails находился под /usr/bin, а не под /usr/local/bin, но я использую OS X, а не один из Linux. Я изменю первоначальное предложение, чтобы предложить переместить rvm в свои ~/.profile / ~/.bashrc / ~/.bash_profile. - person Tim Snowhite; 17.06.2011
comment
@Tim Прошу прощения - возможно, я вас смутил. Материал rvm должен появиться раньше в вашем $PATH, но это означает, что он должен идти последним (или очень поздно) в вашем профиле. Итак, выше, вы не хотите, чтобы верхняя часть вашего ~/.bash_profile, а нижняя часть .... Я, вероятно, отрегулирую это. - person Telemachus; 17.06.2011
comment
Спасибо! Этот ответ исправил мои проблемы после 5 часов переустановки различных итераций ruby/rvm/gems и т. д. - person leo; 30.01.2012
comment
Ваш ответ помог мне дважды за 2 месяца! :) - person EvAlex; 04.06.2013

Я только что решил ту же проблему в Windows Vista.

Моя консоль выдавала мне это сообщение:

$ rails -v
sh: /c/RailsInstaller/Ruby1.9.2/bin/rails: C:/Projects/railsinstaller/Stage/Ruby1.9.2  /bin/ruby.exe: bad interpreter: No such file or directory

Я только что отредактировал первую строку этого файла:

C:\RailsInstaller\Ruby1.9.2\bin\rails

И указал правильное место для ruby.exe в моей системе, например:

#!C:\RailsInstaller\Ruby1.9.2\bin\ruby.exe

И вуаля, проблема решена!

person Darme    schedule 08.09.2011

Вам нужно запустить rvm use --default 1.9.2, а не только rvm use --default.

person Dylan Markow    schedule 17.06.2011
comment
я так и сделал..но ничего - person gerky; 17.06.2011