Отримання попередження! PATH не налаштований належним чином »під час використання rvm використовуйте 2.0.0 - за замовчуванням


115

Вище працює не перший раз, працює 2-й раз.

Спробуйте встановити рубінову версію на 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-центру git Wayne Seguin. Він перераховує інструменти на своїй сторінці та рекомендує їх використовувати

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

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

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

rvm helpповертає досить страшний натяк на rvm reset: видалити всі налаштування за замовчуванням та системні настройки 😄
Muhamed Huseinbašić

171

Відповідь полягала в наступному:

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

** у BOTTOM ** (останній рядок - важливо!) мого файлу .bashrc. У мене це було в моєму файлі .bash_profile (я перебуваю на Ubuntu), і це лише частково працювало, що призводило до заплутаних помилок.


1
Здається, контр-інтуїтивно рухатися до низу, якщо RVM хоче опинитися на вершині ланцюга?
reneruiz

9
rvm повинен знаходитися в нижній частині файлу, якщо в ньому є інші рядки. [ba | z] shrc, які повторно визначають шлях. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"для Homebrew - це, мабуть, поширений, який вступає в конфлікт з rvm.
TimeEmit

4
Я помістив його внизу мого .bash_profile, оскільки я кілька разів переосмислював шлях. Це теж спрацювало.
Кайл Сусс

1
це добре працювало для мене після перезавантаження терміналу
NSTJ

24
це, безумовно, правильне рішення, але якщо ви просто зробите rvm resetце, це зробить для вас автоматично ...
Ральф Callaway

34

Можливо, це не найкращий спосіб вирішити це питання, але я додав цей рядок у ботоні мого .zshrc (він також буде працювати у .bashrc!)

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

Це більш чисте рішення, IMO, з оновленнями до RVM.
Dan L

Я не погоджуюсь, я думаю, що це найкращий спосіб вирішити це питання :) Я повинен був поставити це як останній рядок мого .bash_profile, коли він працює останнім, і в ньому є інші оголошення про шлях.
applejack42

Це дійсно одне з найкращих рішень для вирішення цього питання. Витратив майже 3 години і нарешті ось-ось здасться: D ти чоловік. :)

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

Так, це найкраще рішення, тому що зрозуміло і вкажіть, куди поставити експорт. Дякую!!!
Альберт Катала

23

Я спробував рішення Майкла Дюрранта, і це не спрацювало. але я побіг, rvm get stable --auto-dotfilesі він почав працювати, як хотілося.

Сподіваюся, це допомагає


Це спрацювало над Mavericks, для завершення виправлення довелося перезапустити термінал.
Бретт Бім

1
На Mac 10.12.3 з iTerm2 3.0.15, риба 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 на "перед" $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

Зрозуміло, якщо щось є у файлі init-файлу оболонки після рядка 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 працювати в одному екземплярі, а не в іншому?


Ні. Це спрацювало, і я продовжив :) Багато цікавішої риби смажити :)
Michael Durrant

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 або стабільність роботи з автоматичними dotfiles) не давали.


2

Я визнав цю команду дуже корисною. Це вирішує мою справу. Тож якщо у когось є те саме, спробуйте: rvm get stable --auto-dotfiles


1

rvm install ruby-head Виправлена ​​проблема для мене - це мало часу, але зробив трюк. Не впевнений, чи це зробило якісь непередбачені оновлення моїх файлів bash.


1

Я закінчився видаленням ~/.profile, ~/.bashrcі ~/.zshrc.

В основному я тримався лише ~/.bash_profileна своєму mac. І це працює.

Я думаю, що в моєму випадку є:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scriptpts / rvm"]] && source "$ HOME / .rvm / script / rvm" # Завантажте RVM в сеанс оболонки * як функцію *

в цих файлах, і ці дублікати налаштування переплутані rvm


1

Відмова від відповідальності

Тому що я в основному розвиваюсь за допомогою python, тож я не впевнений, чи не вдасться цей спосіб вирішити правильну рубіну або просто змінити шлях і позбутися попередження

Фон

У моєму випадку я встановив rvmспочатку, а потім pyenvпізніше. Конфігурація обох буде змінена $PATH. З попередження виходить, що rvm завжди хоче бути першим на шляху

$ echo $PATH

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

Але якщо ви додасте eval "$(pyenv init -)"відповідно з вимогами pyenv, це змінить вашу $PATHTo

$ 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 Насправді ОП заявила лише про проблему, не ставлячи запитання, тому вважаю «ігнорування» попереджувального повідомлення дійсною пропозицією. Крім того, я не розумію частину нових проектів.
AkaZecik

1
Навіть якщо немає запитання, ви точно можете зрозуміти з контексту, що він намагається виправити помилку, а не приховати її :) Плюс, ваша відповідь неповна, тому що це лише частина того, що підказує попереджувальне повідомлення. Спочатку пропонується отримати найновіший стабільний RVM та автозавантажити ваші файли. Що стосується нових проектів, це було моєю помилкою, оскільки я хотів посилатися на нові гемсети.
ma3x

@ ma3x Дякую за вашу думку :) Можливо, саме наші способи міркування відрізняються, але, прочитавши питання та інші відповіді, я дійшов висновку, що ОП просто хоче позбутися цього попередження. Хочу ще раз підкреслити, що це не помилка , це попередження . І тому, що примусово виконувати порядок доріжок PATHзвуків, нав'язливих для мене, і в кращому випадку захисних , я вирішив опублікувати цю відповідь. У мене знадобиться час, щоб переосмислити свою відповідь та вдосконалити її на основі ваших коментарів :)
AkaZecik

-3

Я зафіксував цю проблему. ВИКОРИСТОВУЙТЕ ВИКОРИСТОВУЙТЕ КОМАНДУ ТОМУ:

rvm use 2.0.0-p353

ADD -p353 або інша інформація про версію до кінця рядка


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