Ich habe kürzlich ein Upgrade auf Ubuntu 9.04 durchgeführt und Probleme mit der Verwendung von Edelsteinen. Ich habe Ruby, Rubygems und Rails mit apt-get installiert. Der Befehl Rails
funktioniert.
Ich habe dann Capistrano und andere Edelsteine wie Heroku installiert. Dazu habe ich den Befehl verwendet:
Sudo gem install XXX
Wenn ich den Befehl cap
verwenden möchte, funktioniert das nicht:
bash: cap: command not found
Das gleiche gilt für die anderen Edelsteinbefehle.
Muss ich etwas Besonderes tun, damit die gem-Befehle funktionieren?
Mit dem Befehl gem environment
Können Sie herausfinden, wo Ihre Edelsteine gespeichert sind. Beispielsweise:
[email protected]:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- Ruby VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/Ruby/gems/1.8
- Ruby EXECUTABLE: /usr/bin/Ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- Ruby
- x86-linux
- GEM PATHS:
- /usr/lib/Ruby/gems/1.8
- /home/chris/.gem/Ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
Wenn Sie sich den Abschnitt "GEM PATHS:" ansehen, können Sie sehen, dass Edelsteine an zwei Stellen auf meinem Laptop gespeichert werden können: /usr/lib/Ruby/gems/1.8
Oder im Verzeichnis .gem
In meinem Ausgangsverzeichnis.
Sie können auch sehen, dass ausführbare Dateien im EXECUTABLE DIRECTORY gespeichert sind, in diesem Fall /usr/bin
.
Da sich /usr/bin
In meinem Pfad befindet, kann ich cap
, merb
, Rails
usw. ausführen.
Wenn sich Ihr EXECUTABLE-VERZEICHNIS aus irgendeinem Grund nicht in Ihrem Pfad befindet (z. B. /var/lib/gems/1.8/bin), müssen Sie Ihre PATH-Variable aktualisieren.
Angenommen, Sie verwenden die Bash-Shell. Sie können dies für die aktuelle Sitzung schnell tun, indem Sie Folgendes an der Shell-Eingabeaufforderung eingeben. Nehmen wir an, Sie möchten dem Pfad /var/lib/gems/1.8/bin
hinzufügen:
export PATH=$PATH:/var/lib/gems/1.8/bin
und drücken Sie die Eingabetaste. Damit wird das neue Verzeichnis an das Ende des aktuellen Pfads angehängt. Beachten Sie den Doppelpunkt zwischen $PATH
Und /var/lib/gems/1.8/bin
Um den Wert für alle Sitzungen festzulegen, müssen Sie entweder Ihre .profile
- oder .bashrc
- Datei bearbeiten und dieselbe Zeile am Ende der Datei einfügen. Normalerweise bearbeite ich meine .bashrc
- Datei aus keinem anderen Grund als dem, was ich immer getan habe. Wenn Sie fertig sind, speichern Sie die Datei und aktualisieren Sie Ihre Umgebung, indem Sie Folgendes eingeben:
bash
an der Shell-Eingabeaufforderung. Dadurch wird der .bashrc
Erneut gelesen.
Sie können jederzeit den aktuellen Wert von $PATH
Überprüfen, indem Sie Folgendes eingeben
echo $PATH
an der Shell-Eingabeaufforderung.
Hier ist ein Beispiel von einem meiner eigenen Server, auf dem mein Benutzername "chris" und der Computername "chris-laptop" lautet:
[email protected]:~$
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
[email protected]:~$
[email protected]:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
[email protected]:~$
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
[email protected]:~$
" Ruby-Edelsteine werden trotz Installation nicht geladen " hebt ein häufiges Problem bei der Verwendung mehrerer verschiedener Ruby-Versionen hervor; Manchmal sind die Gem-Umgebung und der Gem-Pfad nicht synchron:
rb(main):003:0> Gem.path
=> ["/opt/Ruby1.9/lib/Ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Jeder Ruby hier sucht nur an einer Stelle nach seinen Edelsteinen.
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- Ruby VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/Ruby1.9/lib/Ruby/gems/1.9.1
- Ruby EXECUTABLE: /opt/Ruby1.9/bin/Ruby1.9
- EXECUTABLE DIRECTORY: /opt/Ruby1.9/bin
- RUBYGEMS PLATFORMS:
- Ruby
- x86_64-linux
- GEM PATHS:
- /opt/Ruby1.9/lib/Ruby/gems/1.9.1
- /home/mark/.gem/Ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Schauen Sie sich die Ausgabe der Gem-Umgebung genau an:
- GEM PATHS:
- /opt/Ruby1.9/lib/Ruby/gems/1.9.1
Dies ist nicht derselbe Pfad wie der von Gem.path zurückgegebene:
["/opt/Ruby1.9/lib/Ruby1.9/gems/1.9.1"]
Es ist schwer zu sagen, was genau dazu geführt hat, dass lib/Ruby
Auf lib/Ruby1.9
Geändert wurde, aber höchstwahrscheinlich arbeitete der Entwickler mit mehreren Ruby= Versionen. Ein kurzer mv
oder ln
lösen das Problem.
Wenn Sie mit mehreren Ruby Versionen arbeiten müssen, sollten Sie rvm verwenden.
Wie von @Chris bemerkt, müssen Sie Ihrem Pfad die Edelsteinumgebung hinzufügen. Sie können dies tun, indem Sie:
echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
Der Ordner, in dem sich Edelsteine befinden gespeichert muss sich auf Ihrem PFAD befinden. Mein Ordner lautet beispielsweise:
/home/victor/.gem/Ruby/1.8/bin
Überprüfen Sie Ihren Pfad, indem Sie Folgendes eingeben
echo $PATH
Es sieht so aus, als ob ich bei der Installation von Rubygems, jetzt in Ubuntu 9.04, dieses Problem habe. Mir ist aufgefallen, dass in "gem environment" das ausführbare Verzeichnis "/var/lib/gems/1.8/bin" ist, anstatt "/ usr/bin" ... Dies ist ein Problem mit Rubygems oder Ubuntu 9.04?
Die Lösung, auf die ich gestoßen bin, besteht darin, "/var/lib/gems/1.8/bin" zu meinem $ PATH hinzuzufügen: export PATH = $ PATH: /var/lib/gems/1.8/bin Wird aber nicht gespeichert ... wie kann ich meinen Weg retten?
Vielen Dank...
Lösung: Export von PATH = $ PATH: /var/lib/gems/1.8/bin no ~/.bashrc! =]
mkmf ist Teil des Pakets Ruby1.9.1-dev. Dieses Paket enthält die Header-Dateien, die für Erweiterungsbibliotheken für Ruby 1.9.1 benötigt werden. Sie müssen das Paket Ruby1.9.1-dev folgendermaßen installieren:
Sudo apt-get installiert Ruby1.9.1-dev