webentwicklung-frage-antwort-db.com.de

Wie verwende ich Edelsteine ​​mit Ubuntu?

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?

76
Arthur

Wo sind meine Edelsteine?

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.

Aktualisieren Sie Ihren Pfad

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]:~$ 

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 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.

138
Chris McCauley

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
5
Adam Greenhall

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
3
victor hugo

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! =]

1
Rafael Souza

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

0
Sohan