Ursache für die Installationspfade von Ruby/Gem sind überall verstreut?

Ursache für die Installationspfade von Ruby/Gem sind überall verstreut?

können Sie mir helfen, die Struktur meines Ruby-Ordners zu verstehen? Ich verstehe nicht, warum meine Edelsteine ​​überall verstreut sind und warum sie keine erkannten Befehle sind.

Ich erkläre zunächst, wie meine Installation aussieht:

/usr/bin/ruby
/usr/bin/ruby1.8
/usr/bin/ruby1.9.1

Der erste ist ein Softlink zu Ruby1.9.1, weil der Befehl „Ruby“ im Terminal nicht funktionierte. Dasselbe habe ich mit „Gem“ gemacht. Ich habe Rubygems installiert, indem ich es heruntergeladen, extrahiert und dann setup.rb hier ausgeführt habe: (Ich habe den Ordner „Ruby“ erstellt)

/home/pc/ruby/rubygems-1.7.2/setup.rb

/usr/bin/gem
/usr/bin/gem1.8
/usr/bin/gem1.9.1

Ich habe ein paar Gems mit "sudo gem install" installiert

> gem list

 *** LOCAL GEMS ***

 compass (0.10.6)
 haml (3.0.25)
 mustache (0.99.3)
 rake (0.8.7)

So weit, so gut? Naja, nicht ganz, denn wie sich herausstellt, scheint der Befehl „compass version“ nicht zu existieren. Meine Verwirrung wächst mit jedem Ordner, den ich mir ansehe. Der folgende Pfad ergibt für mich zum Beispiel keinen Sinn. Warum sollte er versteckt sein? Warum ist mustache das einzige Juwel in diesem Ordner?

/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem

Zunächst einmal ist hier "Gem-Umgebung", was noch weniger Sinn macht, da ich definitiv rubygems-1.7.2 installiert habe, wie ich Ihnen im ersten Absatz gesagt habe,aber hier wird eine veraltete Version 1.3.7 angezeigt. Warum?Ich habe Ubuntu vorgestern installiert.

  RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.9.1
  - RUBY EXECUTABLE: /usr/bin/ruby1.9.1
  - EXECUTABLE DIRECTORY: /var/lib/gems/1.9.1/bin
      - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.9.1
     - /home/pc/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

ruby --version gibt „ruby 1.8.7“ zurück........... Außerdem stellt sich heraus, dass alle Gems in diesem Ordner installiert sind (auch Mustache, obwohl es sich bereits im anderen Ordner befindet), genau wie es die „Ruby-Umgebung“ behauptet:

/var/lib/gems/1.9.1/gems

Aber keines dieser Gems funktioniert. Ich kann keines davon aufrufen, außer Rake. Hier habe ich wahrscheinlich den Fehler gemacht. Ich glaube, ich habe zusätzlich zu „Gem Install Rake“ „apt-get install rake“ verwendet, weil der Befehl „Rake“ nicht erkannt wurde und die Eingabeaufforderung ihn vorgeschlagen hat. Vielleicht ist mir das auch bei Rubygems passiert … Ich bin neu bei Linux und dachte, die Eingabeaufforderung wüsste, wie man dieses Zeug richtig installiert.

.

Es kann doch nicht normal sein, dass ich überall Syslinks erstellen muss, oder?Unter Windows ist mir dieses Problem nicht begegnet.

Antwort1

Ich habe RVM installiert. Ich weiß immer noch nicht, warum da so ein Durcheinander herrschte, aber jetzt kann ich einfach eine bestimmte Ruby-Version erzwingen und ich weiß, wo alle Gems installiert werden. (In das RVM-Verzeichnis.) Funktioniert bei mir.

Antwort2

Ich vermute, Ihr Problem liegt an der RubyGemsmanuellen Installation und nicht an der Installation mit apt-get. Möglicherweise haben Sie dasselbe mit getan rubyoder Ihnen fehlt ein Metapaket, das den von Ihnen manuell erstellten Symlink enthält.

Aus demselben Grund liegt /var/lib/gems/1.9.1/bindas Verzeichnis, in dem sich alle Binärdateien befinden, auch nicht in Ihrem $PATH. Sie können die ausführbaren Dateien für diese Gems also nicht finden.


Wenn Sie von Ruby 1.8 auf Ruby 1.9.3 aktualisieren, befinden sich die mit Ruby 1.8 installierten Gems immer noch im Ordner Ruby 1.8. Möglicherweise haben Sie RubyGems mit einer anderen Ruby-Version installiert.


Der folgende Pfad ergibt für mich beispielsweise keinen Sinn. Warum sollte er versteckt sein? Warum ist mustache das einzige Juwel in diesem Ordner?

/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem

Sie haben mustache (ohne sudo) offensichtlich installiert mit

gem install mustache

Dies installiert es für den Benutzer und das Benutzerinstallationsverzeichnis ist $HOME/.gem/. Der Ordner ist versteckt, damit Sie ihn nicht versehentlich löschen. Möglicherweise müssen Sie ihn zu Ihrem $PATH hinzufügen (oder mit installieren --no-user-install).


Lösung:

Laden Sie RubyGems (und Ruby) nicht einfach manuell herunter und installieren Sie es. Verwenden Sie Ihren Paketmanager ( aptitude)

aptitudeAnschließend können Sie entscheiden, ob Sie Gems mit oder installieren möchten gem install: Pakete über Apt-Get oder Gem installieren.

verwandte Informationen