Получение сообщения «Предупреждение! ПУТЬ настроен неправильно »при использовании 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.