en
de

Ruby auf Unix installieren – Der einfache Weg

27 Mai 2014
| |
Lesezeit: 3 Minutes

Vor knapp 20 Jahren wurde in Japan eine erste Version der Programmiersprache Ruby veröffentlicht. Seitdem gewann die dynamische Sprache immer mehr an Bedeutung und ist mittlerweile in der Software-Entwicklung nicht mehr wegzudenken.
Besonders mit der zunehmenden Verbreitung von mobilen Plattformen, wie zum Beispiel iOS und Android, wurden viele, auf Ruby basierende, Entwicklungswerkzeuge geschaffen. Einige Beispiele dafür sind UI-Testing Frameworks wie Cucumber, Zucchini & Frank oder auch CocoaPods, der Dependency-Manager für Objectiv-C Bibliotheken.

Im letzten Jahr habe ich mit einigen dieser Ruby-Frameworks gerabeitet und hatte dabei oft mit Benutzerrechten zu kämpfen. Meistens waren für den korrekten Betrieb die Administratorenrechte notwendig und manchmal war die Installation von Applikationen/Bibliotheken (Gems) gar unmöglich. Wie sich herausstellte, lag die Ursache bei der vorinstallierten Ruby-Umgebung des Betriebsystems. Diese ist im System-Verzeichnis abgelegt und braucht für bestimmte Befehle erweiterte Benutzerrechte.
Aus diesem Grund lohnt es sich immer, eine eigene (vom System unabhängige) Installation von Ruby anzulegen. Mittlerweile gibt es dafür unzählige Anleitungen und Varianten, diese sind aber nicht immer aktuell und ein falsches Vorgehen kann schnell zum erwähnten Problem führen.

Im Folgenden möchte ich deshalb im Detail auf die Installation von Ruby eingehen. Ich zeige Schritt für Schritt wie eine saubere Installation auf einem Unix/Linux System durchgeführt werden kann. In meinem Fall habe ich das Betriebssystem OSX 10.9.2 verwendet.

Ruby Version Manager RVM installieren

Für die Installation von Ruby empfiehlt sich die Command-Line Applikation Ruby Version Manager (RVM). Mit wenigen Befehlen lassen sich damit unterschiedliche Ruby-Versionen auf dem System verwalten. Zudem stellt RVM sicher, dass die Ruby-Installationen im Benutzerspeicher abgelegt und Ruby auf Benutzerebene ausgeführt wird. Damit arbeitet Ruby isoliert von den System-Prozessen, wodurch die Systemsicherheit erhöht und folglich das Risiko von Systemausfällen reduziert wird.

RVM ist für den Einsatz auf Client und Server konzipiert und bietet dazu verschiedene Installation-Modis an (siehe RVM Installationsanleitung). Für die Client-Installation eignet sich der Mixed Mode, dabei wird RVM im System-Verzeichnis installiert und kann so von jedem Benutzer verwendet werden. Die Ruby-Installationen und Ruby-Gems werden im lokalen Benutzer-Verzeichnis abgelegt, wodurch jedem Benutzer individuelle Versionen und Bibliotheken zur Verfügung stehen.

Die nachfolgenden Befehle werden alle in der Kommandozeile ausgeführt. Bei Mac OSX heisst das Programm dafür Terminal, es kann über Spotlight gefunden und gestartet werden.

Zunächst installieren wir das aktuellste Release von RVM. Nach dem Absetzen des nachfolgenden Befehls wird einmalig nach dem Administrator-Kennwort gefragt. Dieses wird benötigt um RVM im System-Verzeichnis zu installieren und damit allen Benutzern bereitzustellen:

\curl -sSL https://get.rvm.io | sudo bash -s stable

Anschliessend muss festgelegt werden, dass die Ruby-Installation und später die Gems in das Benutzer-Verzeichnis des aktuell eingeloggten Benutzers gespeichert werden sollen:

rvm user gemsets

Zum Schluss kann die RVM-Installation getestet werden. Bei der Ausführung des folgenden Befehls sollte auf der Kommandozeile der Text rvm is not a function ausgegeben werden:

type rvm | head -n 1

Ruby installieren mittels RVM

Nachdem RVM erfolgreich auf dem System installiert wurde, kann nun in wenigen Schritten Ruby installiert werden.
Wer möchte, kann vor der Installation prüfen, mit welcher Ruby-Version das System aktuell arbeitet:

which ruby

Der ausgegebene Pfad sollte auf ein System-Verzeichnis (der vorinstallierte Version) zeigen, falls nicht bereits eine eigene Ruby-Installation angelegt wurde.

Als nächstes möchten wir rausfinden, welche Ruby-Versionen auf dem Ruby-Server zum Download angeboten werden. Eine Liste der verfügbaren Versionen erhalten wir mit:

rvm list known

Auf meinem System sieht die Liste folgendermassen aus:

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p374]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p320]
[ruby-]1.9.3[-p545]
[ruby-]2.0.0-p353
[ruby-]2.0.0[-p451]
[ruby-]2.1[.1]
[ruby-]2.1-head
ruby-head

# GoRuby
goruby
...

Uns interessieren vor allem die # MRI Rubies, das sind die Versionen der Ruby-Referenzimplementierung.

Nun installieren wir die aktuellste Version (ruby-head) der MRI-Rubies:

rvm install ruby-head

Für die Installation einer anderen Version kann ruby-head durch die jeweilige  Versionsnummer z.B. 1.9.3 ersetzt werden. Alternativ kann aber auch der komplette Versionsname verwendet werden, wie zum Beispiel: ruby-2.0.0-p451

Anschliessend muss dem System mitgeteilt werden, mit welcher Ruby-Version es zukünftig arbeiten soll. Wir möchten natürlich die zuvor installierte ruby-head Version verwenden. Mit dem Argument –default bleibt die Auswahl auch nach einem Neustart beibehalten.

rvm use ruby-head --default

Mit dem Befehl which ruby kann zum Schluss geprüft werden, ob das System die neu installierte Ruby-Version auch wirklich verwendet. Der ausgegebene Pfad sollte nun auf die ruby-head Installation (im Benutzer-Verzeichnis liegend) zeigen.

Ruby-Gems installieren (optional)

Die Ruby-Runtime ist nun erfolgreich installiert und für den Einsatz von Ruby Applikationen/Bibliotheken bereit. Diese können direkt per integriertem Paketmanager RubyGems eingerichtet werden.
Mit nachfolgendem Befehl kann zum Beispiel das Programm CocoaPods installiert werden:

gem install cocoapods

Alle vom Paketmanager bereitgestellten Programme und Bibliotheken sind auf der RubyGems – Website einsehbar.

Habt ihr noch Fragen zur Anleitung? Ich hoffe, ich konnte euch damit den Einstieg in die Ruby-Welt vereinfachen. Im nächsten Beitrag zeige ich die Funktionsweise und Verwendung von CocoaPods, dem Dependency Managers für Objectiv-C.

Kommentare (2)

Daniel Marbach

28 Mai 2014 um 06:24

Hallo
Guter Artikel! Ich persönlich nutze noch Bundler um Dependencies für meine Projekte zu deklarieren und schnell diese Dependencies aufzusetzen. Dann kann man in seinem Git repo einfach bundle install asuführen und kann lossprinten 😉

Gruss dani

    Sascha Thoeni

    Sascha Thoeni

    29 Mai 2014 um 09:41

    Hallo Dani

    vielen Dank für Deine Antwort, ich habe mir Bundler gleich mal angeschaut. Sieht sehr vielversprechend aus und ich werde diesen in zukünftigen Ruby-Projekten sicherlich einsetzen. Ich bin sowieso ein grosser Fan von Dependency-Managern.
    Zurzeit benutze ich Ruby vorallem in iOS-Projekten, z.B. für CocoaPods, dem Dependency-Manager für Objectiv-C Projekte, welcher nach einem ähnlichen Prinzip funktioniert wie Bundler.

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.