Получение сообщения «Предупреждение! ПУТЬ настроен неправильно »при использовании rvm 2.0.0 --default


115

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

Попробуйте установить версию 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$ 

но новые окна по-прежнему дают мне рубин 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

Ответы:


176

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

rvm implode

затем после переустановки rvm он получил такое же сообщение об ошибке. После просмотра страницы git hub Уэйна Сегина. Он перечисляет инструменты на своей странице и рекомендует использовать

rvm reset 

после установки. Это исправило мое сообщение об ошибке. Редактирование PATH не требуется.


13
После проверки и повторной проверки моей ~/.bashrc, ~/.bash_profile, бега rvm get stable --auto-dotfiles, перепроверки ~/.bashrc, ~/.bash_profileи ~/.profileмного раз ... этот ответ наконец установил ее! Ран: rvm resetи избавился от предупреждений! (ИМХО ... RVM слишком привередлив к тому, чтобы быть первым на пути ... Если я поставлю что-то еще на своем пути, я знаю, что делаю)
TrinitronX

11
: tu:rvm reset
JBird 08

18
это сработало для меня! никаких изменений PATH не требуется, просто rvm reset(сообщение будет отображаться в последний раз), теперь, когда я запускаю команду rvm, больше предупреждений PATH не будет.
JohnRDOrazio

1
Когда я использую rvm reset, проблема в терминале, где я запускал rvm reset, решается. Однако, когда я перехожу на новый терминал, ошибка / предупреждение сохраняется, если я снова не запустил rvm reset
Apurva Mayank,

rvm helpвозвращает довольно пугающий намек на rvm reset: удалить все настройки по умолчанию и системные настройки 😄
Мухамед Хусейнбашич

171

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

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

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


1
Кажется нелогичным двигаться вниз, если RVM хочет быть на вершине цепочки?
reneruiz 06

9
rvm должен быть внизу файла на случай, если в. [ba | z] shrc есть другие строки, которые переопределяют путь. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"for Homebrew, вероятно, часто встречается в конфликте с rvm.
TimeEmit 05

4
Я поместил его в конец моего .bash_profile, поскольку я несколько раз переопределял путь. Это тоже сработало.
Кайл Сусс

1
это сработало для меня после перезапуска терминала
NSTJ

24
это определенно правильное решение, но если вы просто сделаете rvm resetэто автоматически ...
Ральф Каллэуэй

34

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

export PATH="$GEM_HOME/bin:$PATH"

Это более чистое решение, IMO, с обновлениями RVM.
Дэн Л.

Я не согласен, я думаю, что это лучший способ решить эту проблему :) Мне пришлось поместить это как последнюю строку моего .bash_profile, поскольку он выполняется последним и содержит другие объявления пути.
applejack42

Это действительно одно из лучших решений для решения этой проблемы. Потратил почти 3 часа и, наконец, собирался сдаться: D ты мужчина. :)

Я добавил свой в свой ~ / .profile, который загружается последней строкой ~ / bash_profile, и убедился, что в любом другом файле нет ссылок на $ PATH. Таким образом, он будет работать в Bash и подхватываться другими оболочками.
Дмитрий

Да, это лучшее решение, т.к. понятно и укажите, куда ставить экспорт. Спасибо!!!
Альберт Катала,

23

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

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


Это сработало на Mavericks, пришлось перезапустить терминал, чтобы завершить исправление.
Бретт Бим

1
На Mac 10.12.3 с iTerm2 3.0.15, fish 2.5.0 и rvm defaultвнизу моего config.fishфайла. команда rvm resetне помогла при открытом окне терминала. Эта команда сработала. Мой результат: pastebin.com/1jUCSGnP
Pysis

Ах, наверное, когда я запускал команды, они использовали bashинтерпретатор, и мне следовало также проверить эти файлы конфигурации ..
Pysis

Нет, он все еще был сломан в других окнах терминала, даже после перезапуска iTerm, и проверка любого количества скриптов профиля не помогла, поэтому я удалил все строки конфигурации, перезапустил свой компьютер, переустановил RVM с интеграцией функции рыбы и включил одна rvm defaultстрока. Сейчас лучше ..
Pysis

8

Это не ответ на заданный вопрос, а на связанный с этим вопрос, который задавало большинство комментаторов / респондентов - зачем вам помещать строку 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и BAM! вы получите предупреждение :).

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


6

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


1
Это решило мою проблему. Я даже не уверен, как .bashrc попал туда, так как все мои конфиги находятся в .bash_profile. Добавляет ли rvm что-нибудь в bashrc при установке? Я предполагаю, что это так, учитывая, что в bashrc была только одна строка, и она была связана с rvm.
kevindeleon

1
Бог знает, что это за программа установки из командной строки. Они, как правило, загрязняют его :(
Ain Tohvri

2
Это не общее решение, FWIW. .bashrcвыполняется для каждой вложенной интерактивной оболочки; .bash_profileвыполняется только в первой введенной оболочке bash, то есть в оболочке входа в систему. Переменные обычно должны быть установлены .bash_profile, тогда как функции, псевдонимы и т. Д. (Вещи, которые не передаются с нормальной унаследованной средой) должны быть установлены .bashrc.
Барри Келли

5

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

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

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


Нет. Это сработало, и я двинулся дальше :) Еще много интересных рыбок для жарки :)
Майкл Даррант

5

Я столкнулся с той же проблемой. Я обнаружил, что в файле 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

3

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

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


2

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


1

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


1

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

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

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

экспорт PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Загрузить RVM в сеанс оболочки * как функцию *

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


1

отказ

Потому что я в основном разрабатываю с использованием 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 # Вернуться на системный рубин

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

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


0

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

#[[ -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/postgresql@9.6/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/postgresql@9.6/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*

0

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

rvm_silence_path_mismatch_check_flag=1

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


1
Это просто игнорирование сообщения, а не его исправление, о чем и просит пользователь. Плюс к новому проекту проблема появится снова.
ma3x

@ ma3x На самом деле OP только заявил о проблеме, не задав вопрос, поэтому я считаю «игнорирование» предупреждающего сообщения правильным предложением. Кроме того, я не понимаю, что такое новые проекты.
AkaZecik

1
Даже если нет вопросительного знака, вы определенно можете понять из контекста, что он пытается исправить ошибку, а не скрыть ее :) Кроме того, ваш ответ неполный, потому что это всего лишь часть того, что предлагает предупреждающее сообщение. Первоначально он предлагает получить последнюю стабильную RVM и автоматизировать ваши файлы. Для новых проектов это было моей ошибкой, потому что я хотел сослаться на новые гемсеты.
ma3x

@ ma3x Спасибо за понимание :) Возможно, дело в том, что наши способы рассуждений различаются, но после прочтения вопроса и других ответов я пришел к выводу, что OP просто хочет избавиться от этого предупреждения. Еще раз хочу подчеркнуть, что это не ошибка , это предупреждение . И поскольку соблюдение порядка путей в PATHзвуках для меня навязчиво и, в лучшем случае, защищает , я решил опубликовать этот ответ. У меня будет время, чтобы переосмыслить свой ответ и улучшить его на основе ваших комментариев :)
AkaZecik

-3

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

rvm use 2.0.0-p353

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


6
Это решает проблему только для текущего сеанса оболочки, поэтому это не совсем лучший ответ.
IIllIIll
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.