So legen Sie Ruby GEM_HOME und GEM_PATH fest


10

Ich bin ein NOVICE-Benutzer von Linux und verwende Linux Mint 17.1

Ich habe Linux Mint 20 in den letzten 3 Tagen für dieses Problem neu installiert, konnte es jedoch nicht beheben

Ich versuche, Ruby auf Rails mit rvm zu installieren. Wenn eine neue Linux-Installation gestartet wird und Gems und Ruby und andere Dinge in einer Terminalsitzung installiert werden, wurde sie erfolgreich installiert, sobald ich die Terminalsitzung schließe. Ich kann diese Gems nicht erhalten .

Durch mehr als 20 Neuinstallationen in den letzten 3 Tagen habe ich auch im Web gesucht. Mir wurde gesagt, dass ich die Umgebungsvariable in den von /etc/environmentmir wiedergegebenen Pfad in dieser Sitzung einfügen und in die /etc/environmentDatei einfügen soll .

Selbst jetzt bekomme ich meine installierten Edelsteine ​​nicht

Beim Tippen werden rvm -vfolgende Fehler angezeigt

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         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-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Ich bin ein sehr unerfahrener Mensch, wenn es um die Arbeit mit dem Terminal geht. Ich kann einige grundlegende Befehle ausführen, um mit Ruby zu arbeiten.

ich würde gerne wissen

  1. So stellen Sie PATH ein
  2. So legen Sie GEM_HOME fest
  3. So setzen Sie GEM_PATH

Unten ist mein vollständiger Weg

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

mr @mohsen pahlevanzades darf ich fragen, was der Sinn des Löschens dieser beiden Zeilen ist, wenn es Ihnen nichts ausmacht, wenn ich es sage, Grüße
Amjad

Wenn ich mich recht erinnere, haben Sie Grüße geschrieben oder sich
bedankt

Antworten:


18

Klingt so, als ob Sie den Befehl exportzum Festlegen von Umgebungsvariablen möchten :

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Dies wird jedoch nur für die aktuelle Sitzung wirksam. Fügen Sie diese Zeilen zu Ihrer hinzu, um sie dauerhafter zu machen ~/.bashrc.


3

Normalerweise bedeutet dies, dass rvm nicht richtig eingerichtet ist. Der übliche Fehler ist, dass Sie .bashrcIhr Terminal nicht korrekt (oder ähnlich) geändert oder Ihr Terminal nicht neu geladen haben.

Sie sollten GEM_HOME oder GEM_PATH nicht manuell festlegen, wenn Sie rvm verwenden.

Sie können versuchen, source ~/.rvm/scripts/rvmfestzustellen, ob dies funktioniert.

Es kann auch sein, dass Sie noch kein Gemset gebaut haben. Verwenden Sie nicht rvm und sudo. Rvm funktioniert am besten, wenn es in Ihrem Konto installiert ist und nicht systemweit.


Sie können auch hinzufügen source ~/.rvm/scripts/rvm, ~/.bashrcum sicherzustellen, dass es jedes Mal geladen wird, wenn Sie eine neue Shell starten.
Niel de Wet

2

Hier ist, was ich gelernt habe und wie ich dieses scheinbar häufige Problem gelöst habe, dass die Umgebungsvariablen GEM_HOME und GEM_PATH keinen Fehler setzen.


Hintergrund

Die RVM-Installation soll GEM_HOME- und GEM_PATH-Umgebungsvariablen für jede eingerichtete RVM erstellen, und das tut sie auch. Aber es gibt anscheinend einen Fehler, der dazu führt, dass die env-Variablen in einigen Fällen nur vorübergehend festgelegt werden. Um sie erneut festzulegen, müssen Sie sie über die Befehlszeile festlegen. Ich habe eine Problemumgehung gefunden, um die Umgebungsvariablen für eine RVM beizubehalten.

Problemumgehung

  1. Suchen Sie Ihre aktive (in der RVM) Ruby-Version: Wechseln Sie auf Ihrem Produktionsserver in Ihr App-Verzeichnis und geben Sie ein $rvm list. Dies führt zu einer Liste der installierten Ruby-Versionen, die für die RVM aktiv sind. Beispiel für die Antwort:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Ich weiß also, dass die RVM derzeit die Version verwendet ruby-1.9.3-p551. Sie benötigen diese Informationen für den nächsten Schritt.

  1. Abrufen der Pfade für GEM_PATH und GEM_HOME : Sie tun dies, indem Sie es über die Befehlszeile ausführen $rvm use ruby-1.9.3-p551. Zeigen Sie dann noch in der Kommandozeile alle Umgebungseinstellungen mit dem Befehl an env. Suchen Sie nach GEM_PATH und GEM_HOME und kopieren Sie diese vollständig in einen Arbeitsbereich.

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. Festlegen der Umgebungsvariablen GEM_HOME und GEM_PATH: Legen Sie nun diese Umgebungsvariablen in einer der vielen Profildateien fest. Ich wollte die Isolationsstruktur der RVM-Version beibehalten und habe daher die Datei /profile.d/appspecific.sh mit den folgenden zwei Zeilen aktualisiert:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


anscheinend sind GEM_HOME und GEM_PATH nicht RVM-spezifisch?
Barlop

2

Ich habe festgestellt, dass .profile zuletzt geladen wird und ~ / .local / bin und ~ / bin an die Spitze des Pfads gesetzt werden. Ich habe /etc/profile.d/rvm.sh nach ~ / .rvm verschoben und ganz am Ende von .profile "source ~ / .rvm / rvm.sh" hinzugefügt und der Fehler ist verschwunden. Ich bin auf Linux Mint 18.3. Ich habe pyenv, rvm und sdkman installiert und alle wollen die letzten sein. Sie arbeiten jetzt alle gut. :) :)

Wenn es sich um ein gemeinsam genutztes System handelt, verschieben Sie rvm.sh einfach irgendwo aus dem Pfad, und jeder andere Benutzer kann es beziehen, z. B. aus /opt/rvm/rvm.sh.


1

Wie bei @coteyr erwähnt, sollten Sie GEM_HOME und GEM_PATH bei der Verwendung nicht manuell festlegenrvm . Wenn Sie Ihre Umgebungsvariable PATH überprüfen, indem Sie $ echo $PATH$ HOME / .rvm / bin ausführen und ein Teil davon sind, müssen Sie sicherstellen, dass Ihr Terminal Befehle als Anmeldeshell ausführt. Wenn Sie sich beispielsweise auf einem Ubuntu-Computer befinden, öffnen Sie Ihr Terminal und gehen zu: Menü> Bearbeiten> Profileinstellungen> Befehl. Wählen Sie dann "Befehl als Anmeldeshell ausführen".

Dies scheint ein altes Problem zu sein, bei rvmdem ich davon ausgehe, dass es nicht trivial zu beheben ist, da es es schon eine Weile gibt.


1

Zum Auffüllen $GEM_PATHmit meinem System (Manjaro / Arch) habe gemsich Folgendes hinzugefügt .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.