DSIW

Alles was interessant ist... (Linux, Programmierung, Datenschutz, Medien, uvm.)

Probleme mit dem Installieren von Gems

| Comments

Durch das Umsteigen meines Blogs von Wordpress auf Octopress habe ich mir den Ruby Version Manager (RVM) eingerichtet. Dieser erstellt einen Ordner ~/.rvm. In diesem werden verschiedene Ruby-Versionen abgespeichert, sowie die entsprechenden Gems. (Gems sind Libraries, die in Ruby geschrieben wurden.)
Außerdem habe ich Ruby und Rubygems nochmals systemweit installiert, damit ich Ruby-Skript systemweit ausführen kann.

Situation

Im folgenden beziehe ich mich nur auf die systemweite Installation. Das heißt, dass nicht Ruby mittels RVM genutzt wird. Das stellt man sicher, indem man prüft ob in einem der übergeordneten und im selben Verzeichnis eine Datei namens .rvmrc enthalten ist und geladen wurde. Oder man startet eine neue Konsole im Home-Verzeichnis und beobachtet die Meldungen. Wenn eine Meldung wie Using /home/dsiw/.rvm/gems/ruby-1.9.2-p290 ausgegeben wurde, dann wird Ruby mittels RVM genutzt.

Wenn ein Gem durch den Befehl

$ gem install <gemmodule>

installiert wird, dann landen diese im Ordner ~/.gem. Dabei ist darauf zu achten, dass der Befehl nicht mit Superuser-Rechten ausgeführt wird, sonst werden die Gems in einem anderen Ordner installiert.
Danach wird der Ordner ~/.gem/ruby-<version>/bin erstellt, der alle ausführbaren Ruby-Skripte enthält.

Leider ist dieser Pfad nicht in der globalen $PATH-Variable enthalten.

Lösung

Der letzte Satz suggeriert schon, dass dieser Pfad dem PATH hinzugefügt werden sollte. Dazu wird die folgende Zeile der ~/.zshrc oder ~/.bashrc hinzugefügt. sh [[ -d $HOME/.gem/ruby/1.9.1/bin ]] && export PATH=$PATH:$HOME/sys/bin:$HOME/.gem/ruby/1.9.1/bin Gegebenenfalls ist zu prüfen, ob der Pfad auch der richtige ist.
Der Test mit -d prüft, ob der Ordner vorhanden ist. Falls das der Fall ist, dann wird der Pfad der PATH hinzugefügt.

Leider habe ich noch keine Möglichkeit gefunden, wie die statische Version aus dem Pfad entfernt werden kann. Dies ist problematisch, wenn Ruby aktualisiert wird und der neue Pfad eine andere Version enthält. Außerdem ist mir nicht klar, wieso die Version 1.9.1 im Pfad steht, obwohl die Version 1.9.3 genutzt wird.

Comments