Ruby-Versionen verwalten mit rbenv
Wenn man ein Ruby-Projekt einsetzt, kann es vorkommen, dass man eine bestimmte Version benötigt, die nicht in der Distribution enthalten ist. rbenv schafft Abhilfe.
Als Entwickler oder Administrator kann man vor dem Problem stehen, dass ein Projekt oder eine Software, die man einsetzen möchte, eine bestimmte Version von Ruby voraussetzt. Die Distribution, die man nutzt stellt dagegen eine andere Version zur Verfügung. Was tun? Ein Wechsel der Distribution oder ein Arbeiten in virtuellen Maschinen oder Containern steht aus vielerlei Gründen oft nicht zur Debatte. Man muss also eine passende Ruby-Version installieren - zusätzlich oder ersatzweise zur vorhandenen Version.
Das Problem ist natürlich nicht auf Ruby beschränkt. Es kann sich genauso mit C und C++ (GCC, Clang), Python, Perl und anderen Sprachen stellen. Gelöst wird es auf unterschiedliche Weise, so sehen die Distributionen oft bereits den parallelen Einsatz von verschiedenen GCC- oder Clang-Versionen vor. Für Python und Perl existieren virtualenv und perlbrew, um Versionen komplett unabhängig vom Betriebssystem zu installieren. Etwas sehr Ähnliches existiert auch für Ruby: rbenv.
Manche Distributionen enthalten rbenv bereits, doch dabei kann es sein, dass rbenv nicht aktuell genug ist, um neuere als die in der Distribution angebotenen Ruby-Versionen zu installieren. Hier wird deshalb beschrieben, wie man die aktuellste Version von rbenv von seiner Projektseite bezieht und einrichtet.
rbenv wird nicht allein verwendet, sondern sinnvollerweise zusammen mit ruby-build. Dieses Plugin für rbenv stellt das Kommando rbenv install
zur Verfügung, ohne das die ganze Übung nutzlos wäre. rbenv wird direkt aus dem Github-Repositorium installiert. Es ist daher sinnvoll, vorher Git zu installieren. Wer das nicht möchte, kann auch eine Zip-Datei herunterladen und entpacken, eine Aktualisierung ist dann aber etwas aufwendiger. Der Quellcode kann in ein beliebiges Verzeichnis, beispielsweise das Home-Verzeichnis oder /usr/src, installiert werden. Dazu führt man die folgenden Kommandos aus. Das configure && make
compiliert eine optionale Shell-Erweiterung. Sollte dies scheitern, ist rbenv dennoch benutzbar.
git clone https://github.com/rbenv/rbenv.git cd rbenv src/configure && make -C src cp libexec/rbenv /usr/local/bin
Mit rbenv
bzw. rbenv help
und der Manpage kann man sich nun bereits einen Überblick über das Programm verschaffen. Bevor man jedoch mit rbenv init
das System initialisiert, sollte man sich überlegen, wo die Daten von rbenv liegen sollen. Standardmäßig wird das versteckte Verzeichnis .rbenv im eigenen Home-Verzeichnis genutzt. Das kann insbesondere im Fall von root oder bei einer systemweiten Installation unerwünscht sein. Deshalb wird in diesem Artikel /usr/local/rbenv genutzt. Das wird rbenv über die Umgebungsvariable RBENV_ROOT
mitgeteilt:
export RBENV_ROOT=/usr/local/rbenv
Dieses Verzeichnis existiert noch nicht, aber wir wollen sowieso noch ruby-build installieren. Auch dieses wird von Github bezogen:
mkdir -p /usr/local/rbenv/plugins cd /usr/local/rbenv/plugins git clone https://github.com/rbenv/ruby-build.git