Получение предупреждения! PATH неправильно настроен при использовании rvm 2.0.0 --default

Выше не работает первый раз, работает 2-й раз.

Попробуйте установить версию ruby ​​на 2.0.0 для любых новых окон оболочки.

Делает

$ rvm use 2.0.0 --default

дает

Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/
bin' is not at first place,
         usually this is caused by shell initialization files - check them for '
PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --au
to-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'
.
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247

Затем делаем то же самое

$ rvm use 2.0.0 --default

теперь не выдает ошибки, т.е.

$ rvm use 2.0.0 --default
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
durrantm.../durrantm$ 

но новые окна все еще дают мне ruby ​​​​1.9.3, а не 2.0.0

В моем файле .bashrc есть:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "/home/durrantm/.rvm/scripts/rvm" ]] && . "/home/durrantm/.rvm/scripts/rvm"

Мой .bash_profile имеет:

source ~/.profile
case $- in *i*) . ~/.bashrc;; esac

Пытающийся

rvm get stable

вроде работает, но в конце много зелени показывает:

Could not update RVM, get some help at #rvm IRC channel at freenode servers.

Новое окно терминала с rvm list rubies показывает это:

$ rvm list rubies
Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/bin' is not at first place,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'.

rvm rubies

=> ruby-1.9.3-p125 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
 * ruby-2.0.0-p247 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

person Michael Durrant    schedule 16.08.2013    source источник


Ответы (16)


Я застрял после того, как удалил rvm с помощью

rvm implode

затем после переустановки rvm он получил то же сообщение об ошибке. После просмотра страницы git-хаба Wayne Seguin. Он перечисляет инструменты на своей странице и рекомендует использовать

rvm reset 

после установки. Это исправило мое сообщение об ошибке. Никаких изменений PATH не требуется.

person brandoncontreras    schedule 19.09.2014
comment
После проверки и перепроверки моих ~/.bashrc, ~/.bash_profile, запуска rvm get stable --auto-dotfiles, перепроверки ~/.bashrc, ~/.bash_profile и ~/.profile много раз... этот ответ, наконец, исправил это! Ран: rvm reset и он избавился от предупреждений! (ИМХО... RVM слишком привередлив к тому, чтобы быть первым на пути... Если я сначала установлю что-то еще на своем пути, я знаю, что делаю) - person TrinitronX; 14.03.2015
comment
это сработало для меня! никаких изменений PATH не требуется, просто rvm reset (сообщение будет отображаться в последний раз), теперь в любое время, когда я запускаю команду rvm, больше не будет предупреждений PATH. - person JohnRDOrazio; 10.10.2015
comment
Когда я использую сброс rvm, проблема в терминале, где я запускал сброс rvm, решается. Однако, когда я перехожу к новому терминалу, ошибка/предупреждение сохраняется, если я снова не запускаю rvm reset - person Apurva Mayank; 07.08.2018
comment
rvm help возвращает довольно страшную подсказку для rvm reset: удалить все настройки по умолчанию и системные настройки ???? - person Muhamed Huseinbašić; 12.02.2020
comment
После того, как я запустил это, я сделал rvm gemset list, но все мои гемсеты исчезли, я думал, что они были удалены, но вам нужно снова выбрать свою рубиновую версию (например, rvm use 2.7.0), и ваши гемсеты снова появятся. - person medBouzid; 27.12.2020

Ответ был такой:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
# Load RVM into a shell session *as a function*

**ВНИЗУ** (последняя строка — важно!) моего файла .bashrc. У меня это было в моем файле .bash_profile (я на Ubuntu), и это работало только частично, что приводило к запутанным ошибкам.

person Michael Durrant    schedule 16.08.2013
comment
Кажется нелогичным двигаться вниз, если RVM хочет быть на вершине цепочки? - person reneruiz; 06.02.2014
comment
rvm должен быть внизу файла на случай, если в .[ba|z]shrc есть другие строки, которые переопределяют путь. export PATH="/usr/local/bin:/usr/local/sbin:$PATH" для Homebrew, вероятно, часто конфликтует с rvm. - person TimeEmit; 06.03.2014
comment
Я поместил его внизу моего .bash_profile, так как несколько раз переопределял путь. Это тоже сработало. - person Kyle Suss; 29.03.2014
comment
это сработало для меня после перезапуска терминала - person NSTJ; 12.09.2015
comment
это определенно правильное решение, но если вы просто сделаете rvm reset, оно сделает это за вас автоматически... - person Ralph Callaway; 26.01.2016
comment
чертовски круто! боролся с этим и несколько дней имел дело со сломанным rvm. В итоге я получил один и тот же исходный оператор rvm в bashrc, bash_profile и .profile, и каким-то образом они заткнули друг друга. Теперь я очистил свой bashrc и профиль, и у меня есть все в моем .bash_profile. Не уверен, что это хорошая практика или нет, но я не скриптер bash, и мне не нужно многого, поэтому 1 простой файл сделал все намного проще. Спасибо за очень хорошо продуманный вопрос и ответ. Ваше здоровье! - person Aaron Henderson; 12.01.2017
comment
Это сработало для меня - и у меня была эта проблема в течение длительного времени! - person rubyandcoffee; 14.11.2017
comment
Как и @AaronHenderson, я очистил свои файлы .bashrc и .profile. Затем я запустил rvm --default use 2.5.0 и перезапустил терминал. Это исправило это для меня. Я пробовал много других решений, но это была очистка других файлов, а затем повторный запуск кода по умолчанию, который сделал это за меня. - person Christopher Warrington; 06.01.2019
comment
Спасибо @RalphCallaway после того, как вышеописанное не сработало rvm reset сработало! - person sambecker; 07.02.2019
comment
Начиная с Ubuntu 19.04 и rvm v.1.29.9 он работает с: [[ -s "/usr/share/rvm/scripts/rvm" ]] && source "/usr/share/rvm/scripts/rvm" - person droid001; 19.08.2019

Возможно, это не лучший способ решить эту проблему, но я добавил эту строку внизу моего .zshrc (она будет работать и в .bashrc!)

export PATH="$GEM_HOME/bin:$PATH"
person Pedro José Piquero Plaza    schedule 22.07.2015
comment
Это более чистое решение, IMO, с обновлениями RVM. - person Dan L; 06.11.2015
comment
Я не согласен, я думаю, что это лучший способ решить эту проблему :) Мне пришлось поместить это как последнюю строку моего .bash_profile, поскольку она выполняется последней и содержит другие объявления пути. - person applejack42; 12.07.2016
comment
Это действительно одно из лучших решений для решения этой проблемы. Провел почти 3 часа и, наконец, собирался сдаться: D, ты, мужик. :) - person ; 29.08.2016
comment
Я добавил свой в свой ~/.profile, который загружается последней строкой ~/bash_profile, и убедился, что в любом другом файле нет ссылок на $PATH. Таким образом, он будет работать в Bash и подхватываться другими оболочками. - person Dmitri; 17.09.2016
comment
Да это лучшее решение, т.к. понятно и указать куда ставить экспорт. Спасибо!!! - person Albert Català; 27.10.2016
comment
Спасибо, я рад помочь - person Pedro José Piquero Plaza; 12.05.2017
comment
Используя Ubuntu 16.04 (x64) в среде KDE/Plasma 5, это решение было единственным, которое работало для меня. Добавление этого к ~/.profile ничего не дало, но в качестве последней строки ~/.bashrc это сработало как шарм. Спасибо! - person SylvainB; 31.08.2017

Я попробовал решение Майкла Дюрранта, и оно у меня не сработало. но я запустил rvm get stable --auto-dotfiles и он заработал как надо.

Надеюсь, поможет

person Sparkmasterflex    schedule 05.02.2014
comment
Это работало на Mavericks, пришлось перезапустить терминал, чтобы завершить исправление. - person Brett Bim; 12.02.2015
comment
На Mac 10.12.3 с iTerm2 3.0.15, fish 2.5.0 и rvm default внизу моего файла config.fish. команда rvm reset не помогла при открытом окне терминала. Эта команда сработала. Мой вывод: pastebin.com/1jUCSGnP - person Pysis; 13.06.2017
comment
Ах, возможно, когда я запускал команды, они использовали интерпретатор bash, и я должен был также проверить эти файлы конфигурации. - person Pysis; 13.06.2017
comment
Нет, он все еще не работал в других окнах терминала, даже после перезапуска iTerm, и проверка любого количества сценариев профиля не помогла, поэтому я удалил все строки конфигурации, перезагрузил свой компьютер, переустановил RVM с интеграцией функции рыбы и включил одна rvm default строка. Сейчас лучше.. - person Pysis; 13.06.2017

Это не ответ на заданный вопрос, а связанный с ним вопрос, который задавало большинство комментаторов/респондентов: Зачем вам нужно помещать строку rvm в конец rc-файла оболочки?

Ответ прост.

  1. Загружаемый код rvm помещает бинарные каталоги rvm ruby ​​«вперед» $PATH и
  2. .bashrc (или эквивалент для вашей оболочки по умолчанию) читается и интерпретируется построчно сверху вниз.

Итак, представьте себе следующий сценарий:

$ echo $PATH
  /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
  /Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

$ export PATH=<something>:$PATH
$ echo $PATH
  <something>:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

Ясно, что если что-то присутствует в файле инициализации оболочки после строки RVM и вносит какие-либо изменения в $PATH, в частности, если оно добавляет каталоги к $PATH, то эти изменения будут вытеснять каталоги, добавленные rvm, вниз от их первая позиция. RVM при вызове обнаружит, что его рубиновые бинарные каталоги не находятся в самом начале $PATH и БАМ! вы получите предупреждение :).

Я надеюсь, что это проясняет ситуацию.

person Sankalp    schedule 16.08.2014

Просто добавлю свой опыт: если вы используете .bash_profile, проверьте, не мешает ли .bashrc. В этом случае .bash_profile убивает .bashrc в пользу единой конфигурации Bash.

person Ain Tohvri    schedule 30.07.2014
comment
Это решило мою проблему. Я даже не уверен, как туда попал .bashrc, поскольку все мои конфиги находятся в .bash_profile. Помещает ли rvm что-то в bashrc при установке? Я бы предположил это, учитывая, что в bashrc была только одна строка, и это было связано с rvm. - person kevindeleon; 04.02.2015
comment
Бог знает, какой установщик командной строки его вставил. Они имеют тенденцию загрязнять его :( - person Ain Tohvri; 05.02.2015
comment
Это не общее решение, FWIW. .bashrc выполняется для каждой вложенной интерактивной оболочки; .bash_profile выполняется только в первой введенной оболочке bash, то есть в оболочке входа. Переменные обычно должны быть установлены в .bash_profile, тогда как функции, псевдонимы и т. д. (вещи, которые не передаются в обычном унаследованном окружении) должны быть установлены в .bashrc. - person Barry Kelly; 09.03.2015

У меня есть дополнительный вопрос к этому (хотел бы я просто добавить комментарий, но у меня недостаточно кредитов). У меня была точно такая же проблема - и когда я следовал предложенному сценарию rvm с использованием --auto-dotfiles, у меня возникли проблемы, поскольку сценарий оболочки каким-то образом удалил мой файл .bashrc_profile.

В любом случае, в конце концов я пришел к тому же ответу, указанному выше, поместив эту строку в конец файла .bashrc. [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Вы случайно не нашли, почему это работает именно так, а не со строкой в ​​​​середине файла .bashrc? Есть ли у вас ясность в отношении того, как Unix загружает переменную среды, которая заставляет RVM работать в одном экземпляре, а не в другом?

person David Kim    schedule 28.08.2013
comment
Нет. Это сработало, и я пошел дальше :) Еще много интересной рыбы для жарки :) - person Michael Durrant; 29.08.2013

Я столкнулся с той же проблемой. Я нашел это в файле bashrc

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

несколько записей для rvm. Я прокомментировал одну запись, и она работает нормально.

#export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
#export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
person Deepak Kabbur    schedule 16.04.2015

Я очистил все, что содержало .rvm, из моей строки PATH= в моем .zshrc.

Это решило проблему для меня, тогда как другие ответы здесь (использование сценария rvm или получение стабильной работы с помощью автоматических точечных файлов) не помогли.

person Caleb    schedule 20.03.2015

Я нашел эту команду очень полезной. Это решает мой случай. Так что, если у кого-то такая же проблема, попробуйте: rvm get stable --auto-dotfiles

person castro4000    schedule 06.02.2015

Отказ от ответственности

Потому что я в основном разрабатываю с использованием python, поэтому я не уверен, что этот обходной путь даст вам правильный ruby ​​​​env или просто изменит путь и избавится от предупреждения

Фон

В моем случае я сначала установил rvm, а затем pyenv. Конфиг для них обоих изменится $PATH. Из предупреждения кажется, что rvm всегда хочет быть первым на пути

$ echo $PATH

$HOME/.rvm/gems/ruby-2.6.3/bin: ......

Но если вы добавите eval "$(pyenv init -)" в соответствии с требованиями pyenv, он изменит ваш $PATH на

$ echo $PATH

$HOME/.pyenv/shims:$HOME/.rvm/gems/ruby-2.6.3/bin: ......

Мой обходной путь

$ rvm use system # Вернуться к системе ruby

$ rvm use ruby-2.6.3 # Переключиться на нужную версию

rvm изменит путь на то, что ему нравится, и вы больше не увидите раздражающее предупреждение.

person infinity_coding7    schedule 15.05.2020

rvm install ruby-head Решил проблему для меня - немного времени, но сделал свое дело. Не уверен, что это внесло какие-либо необъяснимые обновления в мои файлы bash.

person user2164305    schedule 05.10.2015

В итоге я удалил ~/.profile, ~/.bashrc и ~/.zshrc.

В основном я держал только ~/.bash_profile на своем Mac. И это работает.

Я думаю, что в моем случае это:

export PATH="$PATH:$HOME/.rvm/bin"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

в этих файлах, и эти дублирующиеся настройки запутали rvm

person Steven Yue    schedule 23.12.2017

Это сработало после комментирования двух верхних повторяющихся строк и добавления их внизу. Не забудьте перезапустить терминал, чтобы он заработал.

#[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
#[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
export PATH="/usr/local/opt/[email protected]/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
person Dave    schedule 16.03.2019

Можете добавить

rvm_silence_path_mismatch_check_flag=1

в ваш файл ~/.rvmrc. Это то, что теперь предлагает предупреждающее сообщение.

person AkaZecik    schedule 14.07.2019
comment
Это просто игнорирование сообщения, а не его исправление, о чем просит пользователь. Плюс для нового проекта проблема появится снова. - person raulp; 24.07.2019
comment
@ma3x На самом деле, ОП только констатировал проблему, не задавая вопроса, поэтому я считаю «игнорирование» предупреждающего сообщения допустимым предложением. Кроме того, я не понимаю часть о новых проектах. - person AkaZecik; 25.07.2019
comment
Даже если нет вопросительного знака, вы определенно можете понять из контекста, что он пытается исправить ошибку, а не скрыть ее :) Кроме того, ваш ответ неполный, потому что это лишь часть того, что предлагает предупреждающее сообщение. Первоначально он предлагает получить последнюю стабильную RVM и автоматически добавить точки в ваши файлы. Для новых проектов это было моей ошибкой, потому что я хотел сослаться на новые гемсеты. - person raulp; 25.07.2019
comment
@ma3x Спасибо за ваши идеи :) Возможно, просто наши рассуждения различаются, но, прочитав вопрос и другие ответы, я пришел к выводу, что ОП просто хочет избавиться от этого предупреждения. Я хочу еще раз подчеркнуть, что это не ошибка, это предупреждение. И поскольку соблюдение порядка путей в PATH звучит для меня навязчиво и, самое большее, защитно, я решил опубликовать этот ответ. Мне потребуется время, чтобы переосмыслить свой ответ и улучшить его на основе ваших комментариев :) - person AkaZecik; 25.07.2019

Я ИСПРАВИЛ ЭТУ ПРОБЛЕМУ. ПОПРОБУЙТЕ ИСПОЛЬЗОВАТЬ КОМАНДУ, КАК ЭТО:

rvm use 2.0.0-p353

ДОБАВИТЬ -p353 или другую информацию о вашей версии в конец строки

person David tsang    schedule 21.10.2015
comment
Это решает проблему только для текущего сеанса оболочки, поэтому это не совсем лучший ответ. - person IIllIIll; 05.01.2016