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
Michael Durrant
źródło

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.

brandoncontreras
źródło
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.

Michael Durrant
źródło
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"
Pedro José Piquero Plaza
źródło
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

Sparkmasterflex
źródło
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.

Sankalp
źródło
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.

Ain Tohvri
źródło
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?

David Kim
źródło
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
Deepak Kabbur
źródło
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.

Caleb
źródło
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

castro4000
źródło
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.

user2164305
źródło
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

Steven Yue
źródło
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.

infinity_coding7
źródło
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/[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*
Dave
źródło
0

Możesz dodać

rvm_silence_path_mismatch_check_flag=1

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

AkaZecik
źródło
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

David Tsang
źródło
6
To rozwiązuje tylko problem dla bieżącej sesji powłoki, więc nie jest to najlepsza odpowiedź.
IIllIIll