Der Ruby Version Manager (RVM) im Einsatz

Der Verwandlungskünstler

Die Verwaltung mehrerer Ruby-Interpreter und -Versionen sowie Gem-Sets zeitgleich auf demselben Rechner wird mit rvm fast zum Kinderspiel
Duell der Datenbanken: In einem Shootout messen sich MySQL und PostgreSQL. Der Schwerpunkt vom ADMIN 06/2011 überprüft, wer schneller ist und gibt einen ... (mehr)

Seit einigen Jahren hat sich Ruby durch den Erfolg von Rails neben anderen Skriptsprachen wie PHP, Perl und Python einen festen Platz in Webhosting-Stacks gesichert. Wo allerdings mehrere Ruby-Versionen gleichzeitig genutzt werden, ergeben sich schnell Probleme.

Zudem wird die Auswahl an möglichen Ruby-Interpretern und -Versionen zunehmend unübersichtlich. Der klassische Ruby Interpreter – oft nach seinem Haupt-Entwickler "Matz's Ruby Interpreter" oder kurz MRI [2] genannt – wird durch Änderungen, die die Rückwärtskompatibilität brechen, derzeit im 1.8er und 1.9er Branch gepflegt. Projekte, die auf Ruby 1.8 setzen, nutzen für den Live-Betrieb nicht selten die um einen verbesserten Garbage Collector erweiterte Ruby Enterprise Edition (REE) [3] . Java-nahe und Performance-kritische Projekte setzen mit JRuby [4] eine Ruby-Implementation in Java ein, um etwa in einem Rails-Projekt von Java-Bindings zu profitieren.

Zugleich gibt es mit Rubygems [5] einen De-facto-Standard für Erweiterungen, vergleichbar zu Perl CPAN, PHP Pear und Python Eggs. Gems werden über ein eigenes Paketmanagement verwaltet, was die Arbeit zwar zunächst vereinfacht, bei mehreren Projekten mit verschiedenen Gem-Abhängigkeiten aber schnell unübersichtlich werden kann. Einen Ausweg aus der komplexen Verschränkung von Ruby-Interpretern und -Versionen sowie Gems bietet »rvm« [1] mit der Möglichkeit, projektbasierte Umgebungen zu pflegen.

Die Standard-Installation von »rvm« gestaltet sich einfach, wenn auch für Administratoren eher ungewohnt. Wie in der Ruby-/Rails-Welt nicht selten, wird das Installationsskript direkt aus dem Netz ausgeführt. Zuvor müssen lediglich Git und Curl installiert sein. Unter Debian/Ubuntu wird das System mit »apt-get install curl git-core« für die Installation von »rvm« vorbereitet.

Installation

Folgt man der offiziellen Quick Installation Methode [6] , ruft man in einem Shellfenster direkt ein Skript aus dem Netz auf: »bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)« . Das unter Linux und OS X lauffähige Bash-Skript lädt weiteren Programmcode per Git aus dem Netz nach und beginnt mit der Installation der aktuellsten RVM-Version. Da lediglich Shell-basierte Wrapper-Skripte ausgerollt werden, ist kein Kompilieren notwendig.

Um »rvm« interaktiv nutzen zu können, muss die Shell den Pfad zu »rvm« kennen und einen Bootstrapper laden. Bei einer benutzerspezifischen Installation muss für Bash beziehungsweise Zsh folgende Zeile ans Ende der »~/.bash_profile« beziehungsweise »~/.zshrc« : »[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"«

Nach dem Ausführen einer neuen Shell, in seltenen Fällen erst nach erneutem Login, steht nun der Befehl »rvm« zur Verfügung. Für den Einstieg ist diese benutzerspezifische Installation empfehlenswert. Sie verändert keine relevanten Daten, kommt vollständig ohne Root-Rechte aus und ist gegebenenfalls per »rm -rf ~/.rvm« wieder zu entfernen.

Systemweite Installation

Sollen mehrere Benutzer auf RVM zugreifen können, empfiehlt sich die systemweite Installation, die wie die benutzerspezifische Installation gestartet wird, jedoch per »sudo« oder direkt als Root. Das Installationsskript erkennt dann, dass es über die Rechte zur systemweiten Installation verfügt, und führt sie aus. EVM wird in »/usr/local/rvm« installiert, der Befehl »rvm« in »/usr/local/bin/rvm« per Symlink eingebunden, der Bootstrapper für Bash und Zsh in »/etc/profile.d/rvm.sh« abgelegt und die Gruppe »rvm« gespeichert. Benutzer, die mit »rvm« arbeiten sollen, müssen Mitglied dieser Gruppe sein. Die Installationslogik von RVM hat sich im Laufe des Projekts mehrfach geändert – je nach Version kann es zu Abweichungen bei den verwendeten Pfaden kommen.

Nach einem erneuten Login des Users zum Auslesen der geänderten Gruppenrechte und des Bootstrappers steht der Befehl »rvm« in der Konsole zur Verfügung. Der Bootstrapper in »/etc/profile« wird in der Regel von Login-Shells automatisch ausgeführt, eine manuelle Erweiterung wie bei der benutzerspezifischen Installation ist also nicht notwendig.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023