Otrzymywanie „Ostrzeżenie! PATH nie jest poprawnie skonfigurowany ”podczas rvm użyj 2.0.0 --default


115

Powyższe nie działa za pierwszym razem, działa za drugim razem.

Spróbuj ustawić wersję ruby ​​na 2.0.0 dla każdego nowego okna powłoki.

Robić

$ rvm use 2.0.0 --default

daje

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

Następnie robiąc to samo

$ rvm use 2.0.0 --default

teraz nie daje żadnego błędu, tj

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

ale nowe okna wciąż dają mi ruby ​​1.9.3, a nie 2.0.0

Mój .bashrcplik zawiera:

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

Mój .bash_profile ma:

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

Próbować

rvm get stable

wydaje się działać, ale pod koniec wielu zielonych wyników pokazuje:

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

Nowe okno terminala rvm list rubiespokazujące to:

$ 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

Odpowiedzi:


176

Utknąłem po odinstalowaniu rvm z

rvm implode

następnie po ponownej instalacji rvm otrzymał ten sam komunikat o błędzie. Po przejrzeniu strony git hub Wayne'a Seguina. Wymienia narzędzia na swojej stronie i zaleca używanie

rvm reset 

po instalacji. To naprawiło mój komunikat o błędzie. Żadne zmiany PATH nie są potrzebne.


13
Po sprawdzeniu i ponowne sprawdzenie mojego ~/.bashrc, ~/.bash_profile, bieganie rvm get stable --auto-dotfiles, powtórnego sprawdzenia ~/.bashrc, ~/.bash_profilei ~/.profilewiele razy ... to odpowiedź wreszcie naprawili! Ran: rvm reseti pozbył się ostrzeżeń! (IMHO ... RVM jest zbyt wybredny, jeśli chodzi o bycie pierwszym na ścieżce ... Jeśli ustawię coś innego na mojej ścieżce, wiem, co robię)
TrinitronX

11
: tu:rvm reset
JBird

18
to działało dla mnie! żadne zmiany PATH nie są potrzebne, po prostu rvm reset(komunikat pojawi się po raz ostatni), teraz za każdym razem, gdy wydaję polecenie rvm, nie ma więcej ostrzeżeń PATH.
JohnRDOrazio

1
Kiedy używam resetowania rvm, problem w terminalu, w którym wykonałem reset rvm, został rozwiązany. Jednak kiedy przenoszę się do nowego terminala, błąd / ostrzeżenie będzie się powtarzać, chyba że ponownie nie uruchomię resetowania
rvm

rvm helpzwraca dość przerażającą wskazówkę dla rvm reset: usuń wszystkie ustawienia domyślne i systemowe 😄
Muhamed Huseinbašić

171

Odpowiedź brzmiała:

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

** na DOLE ** (ostatnia linia - ważne!) mojego pliku .bashrc. Miałem to w swoim pliku .bash_profile (jestem na Ubuntu) i to tylko częściowo działało, prowadząc do mylących błędów.


1
Wydaje się sprzeczne z intuicją, aby przejść na dół, jeśli RVM chce być na szczycie łańcucha?
reneruiz

9
rvm musi znajdować się na dole pliku na wypadek, gdyby w nim były inne linie. [ba | z] shrc, które redefiniują ścieżkę. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"dla Homebrew jest prawdopodobnie częstym problemem, który wchodzi w konflikt z rvm.
TimeEmit

4
Umieściłem go na dole mojego .bash_profile, ponieważ kilkakrotnie redefiniowałem ścieżkę. To też zadziałało.
Kyle Suss

1
to działało dobrze dla mnie po ponownym uruchomieniu terminala
NSTJ

24
jest to zdecydowanie właściwe rozwiązanie, ale jeśli po prostu rvm resetto zrobisz, zrobi to automatycznie ...
Ralph Callaway

34

Może nie jest to najlepszy sposób rozwiązania tego problemu, ale dodałem tę linię na dole mojego .zshrc (będzie działać również w .bashrc!)

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

Jest to bardziej przejrzyste rozwiązanie, IMO, z aktualizacjami RVM.
Dan L

Nie zgadzam się, myślę, że to najlepszy sposób na rozwiązanie tego problemu :) Musiałem umieścić to jako ostatnią linię mojego .bash_profile, ponieważ działa jako ostatni i zawiera inne deklaracje ścieżki.
applejack42

To naprawdę jedno z najlepszych rozwiązań tego problemu. Spędziłem prawie 3 godziny i wreszcie miałem się poddać: D ty człowiekiem. :)

Dodałem mój do mojego ~ / .profile, który jest ładowany przez ostatnią linię ~ / bash_profile i upewniłem się, że nie ma odniesień do $ PATH w żadnym innym pliku. W ten sposób zadziała w Bash i zostanie podniesiony przez inne pociski.
Dmitri

Tak, to najlepsze rozwiązanie, ponieważ jest jasne i określa, gdzie umieścić eksport. Dzięki!!!
Albert Català

23

Wypróbowałem rozwiązanie Michaela Durranta i nie zadziałało. ale pobiegłem rvm get stable --auto-dotfilesi zaczęło działać zgodnie z życzeniem.

Mam nadzieję, że to pomoże


To działało na Mavericks, musiało ponownie uruchomić terminal, aby zakończyć naprawę.
Brett Bim

1
Na Macu 10.12.3 z iTerm2 3.0.15, fish 2.5.0 i rvm defaultna dole mojego config.fishpliku. polecenie rvm resetnie pomogło przy utrzymywaniu otwartego okna terminala. To polecenie zadziałało. Mój wynik: pastebin.com/1jUCSGnP
Pysis

Ach, prawdopodobnie kiedy uruchamiałem komendy, używali bashinterpretera i powinienem był sprawdzić te pliki konfiguracyjne ..
Pysis

Nie, nadal był uszkodzony w innych oknach terminala, nawet po ponownym uruchomieniu iTerm, a sprawdzenie dowolnej liczby skryptów profilu nie pomogło, więc implodowałem, usunąłem wszystkie linie konfiguracyjne, zrestartowałem komputer, ponownie zainstalowałem RVM z integracją funkcji ryb i włączyłem jedna rvm defaultlinia. Teraz jest lepiej ...
Pysis

8

To nie jest odpowiedź na zadane pytanie, ale na pokrewne pytanie, które zadawała większość komentujących / respondentów - Dlaczego musisz umieścić wiersz rvm na dole pliku rc powłoki?

Odpowiedź jest prosta.

  1. Kod rvm, który jest ładowany, umieszcza binarne katalogi rvm ruby ​​na „początku” $PATHi
  2. .bashrc (lub odpowiednik dla twojej domyślnej powłoki) jest odczytywany i interpretowany wiersz po wierszu od góry do dołu.

Wyobraź sobie więc następujący scenariusz:

$ 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

Oczywiście, jeśli coś jest obecne w pliku inicjalizacyjnym powłoki po linii RVM i dokona jakichkolwiek zmian w $ PATH, a dokładniej, jeśli poprzedza katalogi do $PATH, to te zmiany spowodują przesunięcie katalogów dodanych przez rvm w dół od ich pierwszej pozycji. Po wywołaniu RVM stwierdzi, że jego binarne katalogi Ruby nie znajdują się na samym początku, $PATHa BAM! dostaniesz ostrzeżenie :).

Mam nadzieję, że to wszystko wyjaśnia.


6

Dodam tylko moje doświadczenie: jeśli używasz.bash_profile , sprawdź, czy .bashrcnie przeszkadza . Zabijanie .bashrcna korzyść pojedynczej konfiguracji Bash .bash_profiledziała w tym przypadku.


1
To rozwiązało mój problem. Nie jestem nawet pewien, jak .bashrc się tam dostał, ponieważ wszystkie moje konfiguracje są w .bash_profile. Czy rvm umieszcza coś w bashrc podczas instalacji? Przypuszczam, że tak, biorąc pod uwagę, że bashrc miał tylko jedną linię i miał związek z rvm.
kevindeleon

1
Bóg wie, jakiego rodzaju instalator wiersza poleceń go wepchnął. Zwykle go zanieczyszczają :(
Ain Tohvri,

2
To nie jest rozwiązanie ogólne, FWIW. .bashrcjest wykonywany dla każdej zagnieżdżonej powłoki interaktywnej; .bash_profilejest wykonywany tylko na pierwszej wprowadzonej powłoce bash, tj. powłoce logowania. Zmienne generalnie powinny być ustawione w .bash_profile, podczas gdy funkcje, aliasy itp. (Rzeczy, które nie są przesyłane w normalnym środowisku dziedziczonym) powinny być ustawione .bashrc.
Barry Kelly

5

Mam dodatkowe pytanie (chciałbym móc po prostu dodać komentarz - ale nie mam wystarczającej liczby kredytów). Miałem ten sam problem - i kiedy postępowałem zgodnie ze skryptem rvm, który został zasugerowany --auto-dotfiles, wpadłem w kłopoty, ponieważ w jakiś sposób skrypt powłoki usunął mój plik .bashrc_profile .

W każdym razie, w końcu doszedłem do tej samej odpowiedzi, którą wymieniono powyżej, umieszczając tę ​​linię na dole pliku .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Czy zdarzyło Ci się odkryć, dlaczego to działa tak, jak działa, a nie z linią w środku pliku .bashrc? Czy masz jakąś jasność co do sposobu, w jaki Unix ładuje zmienną środowiskową, która powoduje, że RVM działa w jednej instancji, a nie w innej?


Nie. Udało się i ruszyłem dalej :) Mnóstwo ciekawszych ryb do smażenia :)
Michael Durrant

5

Miałem ten sam problem. Znalazłem to w pliku 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

wiele wpisów dla rvm. Skomentowałem jeden wpis i działa dobrze.

#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

Wyczyściłem wszystko, co zawierało plik .rvm, z linii PATH = w moim pliku .zshrc

To rozwiązało problem dla mnie, gdzie inne odpowiedzi tutaj (pozyskiwanie skryptu rvm lub stabilizacja z auto dotfiles) nie.


2

Uznałem, że to polecenie jest bardzo przydatne. Rozwiązuje moją sprawę. Więc jeśli ktoś ma ten sam problem, spróbuj: rvm get stable --auto-dotfiles


1

rvm install ruby-head Naprawiono problem dla mnie - mało czasochłonny, ale załatwił sprawę. Nie jestem pewien, czy spowodowało to niezapowiedziane aktualizacje moich plików bash.


1

Skończyło się na usunięcie ~/.profile, ~/.bashrci ~/.zshrc.

Zasadniczo trzymałem tylko ~/.bash_profilena moim Macu. I to działa.

Myślę, że w moim przypadku są:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Załaduj RVM do sesji powłoki * jako funkcję *

w tych plikach, a te zduplikowane ustawienia są pomieszane rvm


1

Zrzeczenie się

Ponieważ tworzę głównie za pomocą Pythona, więc nie jestem pewien, czy to obejście dałoby poprawne rubinowe env lub po prostu zmieniło ścieżkę i pozbyło się ostrzeżenia

tło

W moim przypadku rvmnajpierw zainstalowałem , a potem pyenvpóźniej. Konfiguracja obu z nich ulegnie zmianie $PATH. Z ostrzeżenia wynika, że ​​rvm zawsze chce być pierwszym na ścieżce

$ echo $PATH

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

Ale jeśli dodasz eval "$(pyenv init -)"zgodnie z wymaganiami pyenv, zmieni się to $PATHna

$ echo $PATH

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

Moje obejście

$ rvm use system # Przełącz się z powrotem na rubin systemowy

$ rvm use ruby-2.6.3 # Przełącz się na wersję, której potrzebujesz

rvm zmieni ścieżkę do tego, co lubi, wtedy nie zobaczysz ponownie irytującego ostrzeżenia.


0

Zadziałało po skomentowaniu dwóch pierwszych zduplikowanych linii i dodaniu ich na dole. Nie zapomnij ponownie uruchomić terminala, aby działał.

#[[ -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

Możesz dodać

rvm_silence_path_mismatch_check_flag=1

do twojego ~/.rvmrcpliku. To właśnie sugeruje teraz komunikat ostrzegawczy.


1
To po prostu ignorowanie komunikatu, a nie naprawianie go, o co prosi użytkownik. Dodatkowo w przypadku nowego projektu problem powróci.
ma3x

@ ma3x Właściwie OP tylko zgłosił problem bez zadawania pytania, więc uważam „ignorowanie” ostrzeżenia za ważną sugestię. Nie rozumiem też części dotyczącej nowych projektów.
AkaZecik

1
Nawet jeśli nie ma znaku zapytania, na pewno z kontekstu możesz zrozumieć, że próbuje naprawić błąd, a nie go ukryć :) Poza tym Twoja odpowiedź jest niekompletna, ponieważ to tylko część tego, co sugeruje komunikat ostrzegawczy. Początkowo sugeruje pobranie najnowszego stabilnego RVM i autodotowanie plików. W przypadku nowych projektów był to mój błąd, ponieważ chciałem odnieść się do nowych gemsetów.
ma3x

@ ma3x Dzięki za spostrzeżenia :) Może po prostu chodzi o to, że nasze sposoby rozumowania się różnią, ale po przeczytaniu pytania i innych odpowiedzi doszedłem do wniosku, że PO chce po prostu pozbyć się tego ostrzeżenia. Chcę jeszcze raz podkreślić, że to nie jest błąd , to ostrzeżenie . A ponieważ narzucając porządek ścieżek w PATHdźwiękach mnie nachalnych, a co najwyżej ochronnych , postanowiłem zamieścić tę odpowiedź.
Poświęcę

-3

NAPRAWIŁEM TEN PROBLEM. SPRÓBUJ UŻYĆ POLECENIA TAKIEGO:

rvm use 2.0.0-p353

DODAJ -p353 lub inne szczegóły wersji do końca linii


6
To rozwiązuje tylko problem dla bieżącej sesji powłoki, więc nie jest to najlepsza odpowiedź.
IIllIIll
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.