Wie verwende ich Edelsteine ​​mit Ubuntu?


76

Ich habe kürzlich ein Upgrade auf Ubuntu 9.04 durchgeführt und habe Probleme mit der Verwendung von Edelsteinen. Ich habe Ruby, Rubygems und Rails mit apt-get installiert. Der railsBefehl funktioniert.

Ich habe dann Capistrano und andere Edelsteine ​​wie Heroku installiert. Dazu habe ich den folgenden Befehl verwendet:

sudo gem install XXX

Wenn ich den capBefehl verwenden möchte, funktioniert es nicht:

bash: cap: command not found

Dies gilt auch für die anderen Edelsteinbefehle.

Muss ich etwas Besonderes tun, damit die Edelsteinbefehle funktionieren?


Ist diese Frage nicht besser für superuser.com geeignet ?
Thiago Diniz

@ThiagoDiniz oder in askubuntu.com ?
Eliran Malka

Antworten:


138

Wo sind meine Edelsteine?

Mit dem gem environmentBefehl können Sie herausfinden, wo Ihre Edelsteine ​​gespeichert sind . Zum Beispiel:

chris@chris-laptop:~$ 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.8oder im .gemVerzeichnis in meinem Home-Verzeichnis.

Sie können auch sehen, dass ausführbare Dateien im EXECUTABLE DIRECTORY gespeichert sind, in diesem Fall /usr/bin.

Denn /usr/binin meinem Weg läßt dies mich laufen cap, merb, railsusw.

Aktualisieren Sie Ihren Pfad

Wenn sich Ihr EXECUTABLE DIRECTORY aus irgendeinem Grund nicht auf 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 schnell für die aktuelle Sitzung tun, indem Sie an der Shell-Eingabeaufforderung Folgendes eingeben: Stellen wir uns vor, Sie möchten /var/lib/gems/1.8/bindem Pfad etwas hinzufügen :

export PATH=$PATH:/var/lib/gems/1.8/bin

und drücken Sie die Eingabetaste. Dadurch wird das neue Verzeichnis an das Ende des aktuellen Pfads angehängt. Beachten Sie den Doppelpunkt zwischen $PATHund/var/lib/gems/1.8/bin

Um den Wert für alle Sitzungen festzulegen, müssen Sie entweder Ihre .profileoder Ihre .bashrcDatei bearbeiten und dieselbe Zeile am Ende der Datei hinzufügen. Normalerweise bearbeite ich meine .bashrcDatei 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 das erneut .bashrcgelesen.

Sie können den aktuellen Wert jederzeit $PATHdurch Eingabe überprüfen

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:

chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$ 
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 

Mein Edelstein wird nicht geladen!

" 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 mehr synchron:

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit

Jeder Ruby-Prozess hier sucht nur an einem Ort 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 Edelsteinumgebung 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 zu lib/rubyeiner Änderung geführt hat, lib/ruby1.9aber höchstwahrscheinlich hat der Entwickler mit mehreren Ruby-Versionen gearbeitet. Eine schnelle mvoder lnwird das Problem lösen.

Wenn Sie mit mehreren Ruby-Versionen arbeiten müssen, sollten Sie wirklich rvm verwenden .


Wie kann ich meinen $ PATH so bearbeiten, dass er die beiden Verzeichnisse enthält, in denen die Gems installiert sind? Danke
0x26res

Ich habe das getan: sudo ln -s /var/lib/gems/1.8/gems/capistrano-2.5.5/bin/cap / usr / local / bin / cap ln: Symbolische Verknüpfung erstellen `/ usr / local / bin / cap ': Datei existiert aber es funktioniert nicht! Es wird immer noch: bash: cap: Befehl nicht gefunden Hier ist mein $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / Spiele: / opt / real / RealPlayer: /var/lib/gems/1.8: /home/arthur/.gem/ruby/1.8
0x26res

Jetzt funktioniert es. Ich habe den Pfad geändert zu: /var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin
0x26res

Gibt es eine Möglichkeit, EXECUTABLE_DIRECTORY in einen Standard zu ändern, z. B. / usr / bin oder / usr / local / bin? Das Hinzufügen von /var/lib/gems/1.8/bin zu meinem Pfad passt nicht gut, zumal es eine Versionsnummer enthält.
Kief

Als ich das auf Systemebene ändern wollte, musste ich das um/etc/environment
dolzenko

5

Wie von @Chris angegeben, müssen Sie die Edelsteinumgebung zu Ihrem Pfad hinzufügen. Sie können dies tun durch:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc

3

Der Ordner, in dem Edelsteine gespeichert sind , muss sich auf Ihrem PFAD befinden. Mein Ordner lautet beispielsweise:

/home/victor/.gem/ruby/1.8/bin

Überprüfen Sie Ihren Pfad durch Eingabe

echo $PATH

1
Vielen Dank für Ihre Antwort. Hier ist der Inhalt von ~ / .gem / ruby ​​/ 1.8 / bin: activerecord-2.3.2 activesupport-2.3.2 heroku-0.9.1 json-1.1.6 Rails-2.3.2 Wenn ich capistrano von installiere Mein Home-Ordner ~, es geht nicht in diesen Ordner. Außerdem befindet sich der Heroku-Edelstein im richtigen Ordner, aber der Heroku-Befehl funktioniert nicht. Der Befehl $ PATH gibt auch Folgendes zurück: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games
0x26res

Funktioniert Ihr Schienenjuwel? Bitte fügen Sie Ihren Ordner ~ / .gem / ruby ​​/ 1.8 / bin zum Pfad hinzu und versuchen Sie es
victor hugo

Ich habe eine Frage gestellt, um zu wissen, wie man den $ PATH bearbeitet: stackoverflow.com/questions/910088/how-can-i-edit-the-path- on-linux
0x26res

1

Es scheint, dass ich bei der Installation von Rubygems, jetzt in Ubuntu 9.04, dieses Problem habe. Ich habe festgestellt, dass in der "Gem-Umgebung" das ausführbare Verzeichnis "/var/lib/gems/1.8/bin" anstelle von "/ usr / bin" lautet ... Dies ist ein Problem mit Rubygems oder Ubuntu 9.04 ??

Die Lösung, auf die ich gestoßen bin, besteht darin, meinem $ PATH "/var/lib/gems/1.8/bin" hinzuzufügen, indem ich dies tue: export PATH = $ PATH: /var/lib/gems/1.8/bin Aber es wird nicht gespeichert ... wie kann ich meinen Weg retten?

Vielen Dank...

Resolvi: coloquei o export PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]


2
Um den Pfad zu speichern, überprüfen Sie die andere Frage, die ich gestellt habe: stackoverflow.com/questions/910088/…
0x26res

0

mkmf ist Teil des ruby1.9.1-dev-Pakets. Dieses Paket enthält die Header-Dateien, die für Erweiterungsbibliotheken für Ruby 1.9.1 benötigt werden. Sie müssen das ruby1.9.1-dev-Paket wie folgt installieren:

sudo apt-get install ruby1.9.1-dev

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.