Ubuntu: Howto rubygems

Ruby ist eine vollständig objekt-orientierte Skriptsprache, die sich wachsender Beliebtheit für die Realisierung von Webanwendungen (siehe Ruby on Rails, Merb, Ramaze, Nitro, ...), für System-Administration (als »glue language«), für Prototyping und Datenauswertung erfreut.

Die Sprache selbst kann auf Ubuntu, Kubuntu und anderen auf Debian basierenden Linux-Distributionen komfortable über den Paketmanager installiert werden:

$ sudo apt-get install ruby

Erweiterungen für Ruby werden typischerweise als so genannte »gems« verbreitet und installiert. Dazu wird zunächst der Paketmanager für diese Gems installiert:

$ sudo apt-get install rubygems

Danach können dann – ähnlich wie bei apt – Ruby-Erweiterungen als Ruby-Gems installiert werden:

$ sudo gem install mechanize

installiert z.B. das Ruby-Gem Mechanize, mit dem man automatisiert per HTTP mit Web-Servern kommunizieren kann.

So weit, so gut. Problematisch wird das Ganze, wenn ein solches Gem auch ein direkt ausführbares Kommando mitbringt. Debian, Ubuntu und Kubuntu haben nämlich einen kleinen Fehler in den bereitgestellten deb-Archiven für rubygems, der leider immer noch nicht gefixt ist.

Ein gutes Beispiel ist Ruby on Rails, ein sehr populäres Model-View-Controller-Framework zur Entwicklung von datenbankbasierten Webanwendungen. Die Installation mit

$ sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-2.0.2
Successfully installed activesupport-2.0.2
Successfully installed activerecord-2.0.2
Successfully installed actionpack-2.0.2
Successfully installed actionmailer-2.0.2
Successfully installed activeresource-2.0.2
Installing ri documentation for activesupport-2.0.2...
Installing ri documentation for activerecord-2.0.2...
Installing ri documentation for actionpack-2.0.2...
Installing ri documentation for actionmailer-2.0.2...
Installing ri documentation for activeresource-2.0.2...
Installing RDoc documentation for activesupport-2.0.2...
Installing RDoc documentation for activerecord-2.0.2...
Installing RDoc documentation for actionpack-2.0.2...
Installing RDoc documentation for actionmailer-2.0.2...
Installing RDoc documentation for activeresource-2.0.2...

sollte problemlos funktionieren. Das Rails-Gem bringt nun aber auch ein neues Kommando mit: rails, mit dem das Grundgerüst für eine neue Web-Anwendung automatisch erzeugt wird.

Ein Aufruf

$ rails myapp
The program 'rails' is currently not installed.  
        You can install it by typing:
sudo apt-get install rails
bash: rails: command not found

schlägt aber fehl, da das Binary in /var/lib/gems/1.8/bin/ liegt; dieses Verzeichnis ist allerdings nicht im $PATH des Anwenders. Die ersten beiden Zeilen der Fehlermeldung weisen übrigens darauf hin, dass man Rails auch über apt installieren kann; das ist allerdings nur mäßig ratsam, da man über apt eine schon etwas angestaubte Version bekommt und gerade die Ruby-Packages unter Debian/Ubuntu/Kubuntu nicht immer über jeden Zweifel erhaben sind …

Was hilft? Ein kleiner, ein bisschen unschöner Hack der bashrc. Man fügt an die ~/.bashrc folgende Zeile an:

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

Wer das gleich für alle Nutzer des Systems und nicht nur für sich selbst fixen möchte, kann diese Zeile auch an /etc/bash.bashrc anfügen.

Ein kurzer Test zeigt, dass das Problem nun behoben ist:

$ rails myapp
      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
[...]
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

Case closed. :-D

Ähnliche Artikel in diesem Blog:

Tags: , , , , , , ,

Einen Kommentar schreiben

Dieses Blog verwendet Textile für Textauszeichnungen. HTML wird nicht unterstützt.