Warnung erhalten! PATH ist nicht richtig eingerichtet “, wenn Sie rvm verwenden, verwenden Sie 2.0.0 --default

115

Oben funktioniert nicht beim ersten Mal, funktioniert beim zweiten Mal.

Versuchen Sie, die Ruby-Version für alle neuen Shell-Fenster auf 2.0.0 zu setzen.

Tun

$ rvm use 2.0.0 --default

gibt

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

Dann mache ich dasselbe

$ rvm use 2.0.0 --default

gibt jetzt keinen Fehler, dh

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

Aber neue Fenster geben mir immer noch Ruby 1.9.3, nicht 2.0.0

Meine .bashrcDatei enthält:

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

Mein .bash_profile hat:

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

Ich versuche es

rvm get stable

scheint zu funktionieren, aber am Ende zeigt eine Menge grüner Output:

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

Ein neues Terminalfenster mit rvm list rubieszeigt dies:

$ 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
quelle

Antworten:

176

Ich steckte fest, nachdem ich rvm mit deinstalliert hatte

rvm implode

Nach der Neuinstallation von rvm wurde dieselbe Fehlermeldung angezeigt. Nachdem Sie Wayne Gituins Git Hub Seite durchgesehen haben. Er listet Tools auf seiner Seite auf und empfiehlt die Verwendung

rvm reset 

nach einer Installation. Dies hat meine Fehlermeldung behoben. Es sind keine PATH-Änderungen erforderlich.

brandoncontreras
quelle
13
Nach der Überprüfung und neu zu überprüfen meint ~/.bashrc, ~/.bash_profile, läuft rvm get stable --auto-dotfiles, erneute Überprüfung ~/.bashrc, ~/.bash_profileund ~/.profileviele Male ... diese Antwort endlich behoben! Ran: rvm resetund es hat die Warnungen beseitigt! (IMHO ... RVM ist viel zu pingelig, wenn es darum geht, der Erste auf dem Weg zu sein ... Wenn ich zuerst etwas anderes auf meinem Weg setze, weiß ich, was ich tue)
TrinitronX
11
: tu:rvm reset
JBird
18
das hat bei mir funktioniert! Es sind keine PATH-Änderungen erforderlich, nur rvm reset(die Meldung wird ein letztes Mal angezeigt). Jetzt, wenn ich einen rvm-Befehl erteile, werden keine PATH-Warnungen mehr ausgegeben.
JohnRDOrazio
1
Wenn ich rvm reset verwende, ist das Problem in dem Terminal, in dem ich rvm reset ausgeführt habe, behoben. Wenn ich jedoch zum neuen Terminal wechsle, bleibt der Fehler / die Warnung bestehen, es sei denn, ich führe rvm reset nicht erneut aus
Apurva Mayank
rvm helpGibt einen beängstigenden Hinweis zurück für rvm reset: Alle Standard- und Systemeinstellungen entfernen 😄
Muhamed Huseinbašić
171

Die Antwort war:

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

** am UNTEN ** (letzte Zeile - wichtig!) meiner .bashrc-Datei. Ich hatte es in meiner .bash_profile-Datei (ich bin unter Ubuntu) und das funktionierte nur teilweise, was zu verwirrenden Fehlern führte.

Michael Durrant
quelle
1
Scheint kontraintuitiv, sich nach unten zu bewegen, wenn RVM an der Spitze der Kette stehen möchte?
Reneruiz
9
rvm muss sich am Ende der Datei befinden, falls andere Zeilen in. [ba | z] shrc vorhanden sind, die den Pfad neu definieren. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"für Homebrew ist wahrscheinlich eine häufige, die mit rvm in Konflikt gerät.
TimeEmit
4
Ich habe es am Ende meines .bash_profile eingefügt, da ich den Pfad mehrmals neu definiert hatte. Das hat auch funktioniert.
Kyle Süß
1
Dies funktionierte gut für mich nach dem Neustart des Terminals
NSTJ
24
Dies ist definitiv die richtige Lösung, aber wenn Sie es nur tun rvm reset, wird es dies automatisch für Sie tun ...
Ralph Callaway
34

Vielleicht ist dies nicht der beste Weg, um dies zu beheben, aber ich habe diese Zeile am Ende meiner .zshrc hinzugefügt (es wird auch in .bashrc funktionieren!)

export PATH="$GEM_HOME/bin:$PATH"
Pedro José Piquero Plaza
quelle
Dies ist eine sauberere Lösung, IMO, mit den Updates für RVM.
Dan L
Ich bin anderer Meinung, ich denke, dies ist der beste Weg, um dies zu beheben :) Ich musste dies als letzte Zeile meines .bash_profile einfügen, da es zuletzt ausgeführt wird und andere Pfaddeklarationen enthält.
Applejack42
Dies ist wirklich eine der besten Lösungen, um dieses Problem zu beheben. Verbrachte fast 3 Stunden und wollte endlich aufgeben: D du der Mann. :)
Ich habe meine zu meinem ~ / .profile hinzugefügt, das in der letzten Zeile von ~ / bash_profile geladen wird, und sichergestellt, dass in keiner anderen Datei Verweise auf $ PATH vorhanden sind. Auf diese Weise funktioniert es in Bash und wird von anderen Muscheln aufgenommen.
Dmitri
Ja, dies ist die beste Lösung, da klar ist und angegeben wird, wo der Export abgelegt werden soll. Vielen Dank!!!
Albert Català
23

Ich habe Michael Durrants Lösung ausprobiert und es hat bei mir nicht funktioniert. aber ich rannte rvm get stable --auto-dotfilesund es begann wie gewünscht zu funktionieren.

Ich hoffe es hilft

Sparkmasterflex
quelle
Dies funktionierte bei Mavericks, musste das Terminal neu starten, um den Fix abzuschließen.
Brett Bim
1
Auf Mac 10.12.3 mit iTerm2 3.0.15 fischen Sie 2.5.0 und das rvm defaultam Ende meiner config.fishDatei. Der Befehl rvm resethalf nicht, wenn das Terminalfenster geöffnet blieb. Dieser Befehl hat funktioniert. Meine Ausgabe: pastebin.com/1jUCSGnP
Pysis
Ah, wahrscheinlich, als ich Befehle bash
ausführte
Nein, es war auch nach dem Neustart von iTerm in anderen Terminalfenstern noch nicht funktioniert, und das Überprüfen einer beliebigen Anzahl von Profilskripten hat nicht geholfen. Daher habe ich implodiert alle Konfigurationszeilen entfernt, meinen Computer neu gestartet, RVM mit der Integration der Fischfunktionen neu installiert und das aktiviert eine rvm defaultZeile. Es ist jetzt besser..
Pysis
8

Dies ist keine Antwort auf die gestellte Frage, sondern auf die verwandte Frage, die die meisten Kommentatoren / Antwortenden gestellt haben: Warum müssen Sie die rvm-Zeile am Ende der Shell-RC-Datei einfügen?

Die Antwort ist einfach.

  1. Der geladene rvm-Code setzt die rvm-Ruby-Binärverzeichnisse an die "Vorderseite" von $PATH, und
  2. .bashrc (oder gleichwertig für Ihre Standard-Shell) wird Zeile für Zeile von oben nach unten gelesen und interpretiert.

Stellen Sie sich also das folgende Szenario vor:

$ 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

Klar, wenn etwas in der Shell-Init-Datei nach vorhanden ist der RVM-Zeile und Änderungen an $ PATH vorgenommen werden, insbesondere wenn Verzeichnisse vorangestellt werden $PATH, werden durch diese Änderungen die von rvm hinzugefügten Verzeichnisse von ihrer ersten Position nach unten verschoben. Wenn RVM aufgerufen wird, wird es feststellen, dass seine Ruby-Binärverzeichnisse nicht ganz am Anfang von $PATHund BAM stehen! Du wirst die Warnung bekommen :).

Ich hoffe das macht die Sache klar.

Sankalp
quelle
6

Ich füge nur meine Erfahrung hinzu: Wenn Sie verwenden .bash_profile, überprüfen Sie , ob .bashrces nicht stört . In diesem Fall funktioniert das Töten .bashrczugunsten einer einzelnen Bash-Konfiguration .bash_profile.

Ain Tohvri
quelle
1
Dies löste mein Problem. Ich bin mir nicht mal sicher, wie .bashrc dorthin gekommen ist, da sich alle meine Konfigurationen in .bash_profile befinden. Setzt rvm bei der Installation etwas in bashrc? Ich würde davon ausgehen, dass bashrc nur eine Zeile enthält und dies mit rvm zu tun hat.
Kevindeleon
1
Gott weiß, welche Art von Befehlszeileninstallateur es eingeschoben hat. Sie neigen dazu, es zu verschmutzen :(
Ain Tohvri
2
Dies ist keine allgemeine Lösung, FWIW. .bashrcwird für jede verschachtelte interaktive Shell ausgeführt; .bash_profilewird nur auf der ersten eingegebenen Bash-Shell ausgeführt, dh auf der Login-Shell. Variablen sollten im Allgemeinen festgelegt werden .bash_profile, während Funktionen, Aliase usw. (Dinge, die in einer normalen geerbten Umgebung nicht übertragen werden) festgelegt werden sollten .bashrc.
Barry Kelly
5

Ich habe eine Folgefrage dazu (ich wünschte, ich könnte einfach einen Kommentar hinzufügen - aber ich habe nicht genug Credits). Ich hatte genau das gleiche Problem - und als ich dem vorgeschlagenen RVM-Skript folgte --auto-dotfiles, bekam ich Probleme, da das Shell-Skript irgendwie mein .bashrc_profile löschte Datei .

Wie auch immer, ich bin schließlich zu der oben aufgeführten Antwort gekommen und habe diese Zeile am Ende der .bashrc- Datei eingefügt . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Haben Sie zufällig herausgefunden, warum das so funktioniert und nicht mit der Zeile in der Mitte der .bashrc-Datei? Haben Sie Klarheit darüber, wie Unix die Umgebungsvariable lädt, mit der RVM in einer Instanz und nicht in einer anderen funktioniert?

David Kim
quelle
Nein, es hat funktioniert und ich bin weitergegangen :) Viele weitere interessante Fische zum Braten :)
Michael Durrant
5

Ich stand vor dem gleichen Problem. Ich habe das in der bashrc-Datei gefunden

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

mehrere einträge für rvm. Ich habe einen Eintrag kommentiert und es funktioniert gut.

#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
quelle
3

Ich habe alles, was eine .rvm enthält, aus meiner PATH = -Zeile in meiner .zshrc entfernt

Das hat das Problem für mich behoben, bei dem die anderen Antworten hier (Beschaffung des RVM-Skripts oder Stabilisierung mit automatischen Punktedateien) dies nicht taten.

Caleb
quelle
2

Ich habe diesen Befehl als sehr nützlich empfunden. Es löst meinen Fall. Wenn also jemand das gleiche Problem hat, probieren Sie es aus: rvm get stable --auto-dotfiles

castro4000
quelle
1

rvm install ruby-head Das Problem wurde für mich behoben - wenig zeitaufwändig, aber der Trick war erledigt. Ich bin mir nicht sicher, ob meine Bash-Dateien dadurch unausgesprochen aktualisiert wurden.

user2164305
quelle
1

Ich landete das Entfernen ~/.profile, ~/.bashrcund ~/.zshrc.

Grundsätzlich habe ich nur ~/.bash_profileauf meinem Mac gehalten. Und es funktioniert.

Ich denke in meinem Fall gibt es:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # RVM in eine Shell-Sitzung laden * als Funktion *

in diesen Dateien und diese doppelten Einstellungen verwirrt rvm

Steven Yue
quelle
1

Haftungsausschluss

Weil ich hauptsächlich mit Python entwickle, bin ich mir nicht sicher, ob diese Problemumgehung Ihnen eine korrekte Ruby-Umgebung geben oder einfach den Pfad ändern und die Warnung entfernen würde

Hintergrund

In meinem Fall habe ich rvmzuerst und dann pyenvspäter installiert . Die Konfiguration für beide wird sich ändern $PATH. Aus der Warnung geht hervor, dass rvm immer der erste auf dem Weg sein möchte

$ echo $PATH

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

Wenn Sie jedoch eval "$(pyenv init -)"nach Bedarf hinzufügen pyenv, ändert sich Ihr $PATHzu

$ echo $PATH

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

Meine Problemumgehung

$ rvm use system # Wechseln Sie zurück zu System Ruby

$ rvm use ruby-2.6.3 # Wechseln Sie zu der Version, die Sie verwenden müssen

rvm Wenn Sie den Pfad so ändern, wie es Ihnen gefällt, wird die nervige Warnung nicht mehr angezeigt.

infinity_coding7
quelle
0

Es funktionierte, nachdem die oberen 2 doppelten Zeilen kommentiert und unten hinzugefügt wurden. Vergessen Sie nicht, das Terminal neu zu starten, damit es funktioniert.

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

Du kannst hinzufügen

rvm_silence_path_mismatch_check_flag=1

zu Ihrer ~/.rvmrcDatei. Das schlägt die Warnmeldung jetzt vor.

AkaZecik
quelle
1
Dies ignoriert nur die Nachricht und repariert sie nicht, was der Benutzer verlangt. Bei einem neuen Projekt tritt das Problem erneut auf.
ma3x
@ ma3x Eigentlich hat das OP nur ein Problem angegeben, ohne eine Frage zu stellen, daher halte ich das Ignorieren einer Warnmeldung für einen gültigen Vorschlag. Außerdem verstehe ich den Teil über neue Projekte nicht.
AkaZecik
1
Selbst wenn es kein Fragezeichen gibt, können Sie anhand des Kontexts definitiv verstehen, dass er versucht, den Fehler zu beheben, nicht zu verbergen :) Außerdem ist Ihre Antwort unvollständig, da dies nur ein Teil dessen ist, was die Warnmeldung vorschlägt. Zunächst wird empfohlen, die neueste stabile RVM zu erhalten und Ihre Dateien automatisch zu notieren. Bei den neuen Projekten war das mein Fehler, weil ich auf neue Edelsteine ​​verweisen wollte.
ma3x
@ ma3x Vielen Dank für Ihre Erkenntnisse :) Vielleicht unterscheiden sich unsere Argumentationsweisen nur, aber nachdem ich die Frage und andere Antworten gelesen habe, bin ich zu dem Schluss gekommen, dass das OP diese Warnung einfach loswerden möchte. Ich möchte noch einmal betonen, dass dies kein Fehler ist , sondern eine Warnung . Und weil PATHmir das Erzwingen einer Reihenfolge von Pfaden aufdringlich und höchstens schützend vorkommt , habe ich beschlossen, diese Antwort zu veröffentlichen. Ich werde mir Zeit nehmen, um meine Antwort zu überdenken und sie basierend auf Ihren Kommentaren zu verbessern :)
AkaZecik
-3

Ich habe dieses Problem behoben. VERSUCHEN SIE DEN BEFEHL WIE DIESES:

rvm use 2.0.0-p353

ADD -p353 oder andere Versionsdetails zum Zeilenende

David Tsang
quelle
6
Dies löst nur das Problem für die aktuelle Shell-Sitzung, sodass es nicht gerade die beste Antwort ist.
IIllIIll