Viele Anwendungen wie Redmine setzen ein installiertes Ruby als Programmiersprache voraus. Es gibt verschiedene Wege um Ruby unter Ubuntu zu installieren. Einige gängige Wege möchte ich in dieser Anleitung vorstellen.
Inhaltsverzeichnis
Ruby über Paketquellen installieren
Der denkbar einfachste Weg Ruby unter Ubuntu zu installieren ist der Weg über die Paketquellen:
sudo apt install ruby
Das hat aber den entscheidenden Nachteil, dass man an die Ruby-Version gebunden ist, die das Betriebssystem mitbringt. In diesem Beispiel etwa Ruby 2.7.0:

Zur Zeit der Entstehung des Artikels (Januar 2021) gab es allerdings schon seit fast einem Jahr Ruby 2.7.1 oder seit drei Monaten Ruby 2.7.2. Von Ruby 3.0.0 ganz zu schweigen.
Auch eine ältere oder eine ganz bestimmte Version von Ruby kann nicht installiert werden. Das ist besonders ärgerlich, wenn eine Anwendung eine bestimmte Ruby-Version voraussetzt und wenig Spielraum lässt.
In diesem Thread geht es zwar um PHP und nicht um Ruby, er erklärt aber dennoch sehr gut die Problematik mit veralteten Paketen unter Ubuntu.
Es zeigt sich also, dass der Weg über die Paketquellen zwar sehr bequem, aber mit einigen Einschränkungen verbunden ist.
Ruby als snap installieren
Auf der offiziellen Ruby-Homepage ist folgendes zu lesen:
Snap ist ein von Canonical entwickeltes Paketierungssystem, das es erlaubt, ein Programm einschließlich seiner Abhängigkeiten für viele Linux-Distributionen zu verteilen. Damit wird das Problem behoben, dass ein Nutzer die aktuelle Ruby-Version nicht aus dem Standard-Repositorium seines Systems (wie rpm oder apt) installieren kann.
https://www.ruby-lang.org/de/news/2018/11/08/snap/
Es löst also das weiter oben beschriebene Problem, dass eine veraltete Version von Ruby installiert werden muss und kein Update möglich ist. Auch eine ältere Version von Ruby kann installiert werden.
Das offizielle snap Packet ist hier zu finden: https://snapcraft.io/ruby
snap installieren
Die Installation ist denkbar einfach:
sudo snap install ruby --classic
Der oben genannte Befehl installiert die neueste verfügbare Version von Ruby:

Möchte man stattdessen eine bestimmte Version von Ruby installieren, ist dies auch möglich. Mit diesem Befehl installiere ich beispielsweise die neueste Version von Ruby 2.7:
sudo snap install ruby --classic --channel=2.7/stable
Ruby-Version wechseln
Möchte man nachträglich den Channel, also die Version von Ruby ändern, ist dies wie folgt möglich:
sudo snap switch ruby --channel=2.7/stable
sudo snap refresh

Der Channel entscheidet also über die installierte Ruby-Version. Eine Übersicht über alle verfügbaren Channels kann mit folgendem Befehl eingesehen werden:
snap info ruby

In der Übersicht ist immer der genaue Channelname wie "latest/stable" oder "2.7/stable" und die exakte Ruby-Version des Channels zu sehen. Außerdem sieht man unter "tracking", auf welchem Channel man sich gegenwärtig befindet.
Übersicht über installierte snaps
Eine weitere Möglichkeit zu überprüfen, auf welchem Channel man sich befindet ist der Befehl snap list:
snap list

snap aktualisieren
Alle installierten oder ein bestimmtes snap lassen sich wie folgt aktualisieren:
sudo snap refresh # Aktualisiert alle snaps
sudo snap refresh ruby # Aktualisiert nur das Ruby-snap
snap deinstallieren
Möchte man das Ruby-snap wieder deinstallieren, geht das mit einem simplen Befehl:
sudo snap remove ruby
Einschränkungen
Im Gegensatz zur Installation über die Paketquellen bietet die Installation als snap sehr viel mehr Flexibilität. Nachteil ist allerdings, dass sich die exakte Ruby-Version nicht bestimmen lässt. Installiert man den Channel 2.7, erhält man die aktuellste 2.7er Version. Aktuell etwa 2.7.2. Die Version 2.7.1 lässt sich so jedoch nicht explizit installieren.
Ruby über RVM installieren
Die meiste Flexibilität erhält man, wenn man Ruby über RVM (Ruby Version Manager) installiert.
GPG Keys installieren
RVM empfiehlt in der offiziellen Installationsanleitung zuerst die GPG Keys zur Verifizierung der RVM Releases zu installieren. Zumindest, wenn man das dedizierte Ubuntu Packet von RVM installiert, ist der Schritt nicht zwingend erforderlich. Bei einer manuellen Installation für andere Linux-Distributionen hingegen schon. Der Vollständigkeit halber importiere ich auf meinem Ubuntu dennoch die Keys:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
RVM installieren
RVM wird für Ubuntu als zusätzliches Repository bereitgestellt. Diese Installationsmöglichkeit sollte auf einem Ubuntu auch bevorzugt werden.
RVM benötigt das Paket "software-properties-common". Wenn dieses nicht installiert ist, muss dieses zuvor installiert werden. Prüfen lässt sich das mit dem folgenden Befehl:
dpkg -l software-properties-common
Wenn das Paket nicht installiert ist, erscheint eine Meldung wie "dpkg-query: no packages found matching software-properties-common". In der Regel ist das Paket aber installiert. Ansonsten kann es ganz einfach über die Paketverwaltung nachinstalliert werden:
sudo apt install software-properties-common
Für die Installation muss zunächst ein neues Repository hinzugefügt werden. Das Hinzufügen des Repositorys und Installieren von RVM geht wie folgt:
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
sudo apt install rvm
Anschließend muss der Benutzer, der RVM ausführen soll, noch in der Gruppe "rvm" aufgenommen und Ubuntu neu gestartet werden:
sudo usermod -a -G rvm BENUTZERNAME
sudo reboot
Damit ist RVM erfolgreich installiert und einsatzbereit.
Verfügbare Ruby-Versionen anzeigen
Welche Ruby-Versionen sich per RVM installieren lassen, kann mit folgendem Befehl eingesehen werden:
rvm list known

In der Mitte steht der Zweig, also z.B. 2.7 und in den eckigen Klammern am Ende der genaue Release wie z.B. 2. "[ruby-]2.7[.2]" heißt also, dass Ruby 2.7.2 die neueste verfügbare Version von Ruby 2.7 ist.
Ruby installieren
Mit folgenden Befehlen kann eine beliebige Ruby-Version installiert werden:
rvm install 2.7 # Installiert die neueste 2.7er Version
rvm install 2.7.1 # Installiert die Version 2.7.1
Welche Ruby-Versionen installiert sind, lässt sich mit diesem Befehl anzeigen:
rvm list rubies

An dem "=*" am Anfang der Zeile ist zu erkennen, dass das Ruby auch als Standard gesetzt wurde und aktuell aktiv ist. Ein ruby --version zeigt daher die eben installierte Version an:

Sollte ein ruby --version keine Version anzeigen, ist gegenwärtig kein Ruby aktiv. In diesem Fall muss das über RVM installierte Ruby noch mit einem der beiden Befehlen aktiviert werden:
rvm use 2.7.2
rvm use 2.7.2 --default
Neben rvm list rubies lässt sich noch mit dem Befehl which ruby einsehen, welches Ruby verwendet wird:
which ruby

Ruby aktualisieren
Ein installiertes Ruby zu aktualisieren ist denkbar einfach. In diesem Beispiel aktualisiere ich Ruby 2.6.6 auf die neueste 2.7er Version:
rvm upgrade 2.6.6 2.7

rvmsudo rvm get head
rvm reload
Achtung: Dieses Vorgehen sollte man nur im Ausnahmefalle wählen, da man den stabilen Versionszweig von RVM somit verlässt und auf einen ggf. instabilen Versionszweig wechselt.
Ruby deinstallieren
Ruby unter Ubuntu zu installieren und zu aktualisieren wäre also erledigt. Eventuell soll ein installiertes Ruby aber auch wieder deinstalliert werden. Das geht mit dem folgenden Befehl:
rvm remove 2.7
Verwendete Ruby-Version ermitteln
Unabhängig von der Installationsweise gibt es mehrere Wege um die installierte Ruby-Version zu ermitteln:
ruby -v
ruby --version
which ruby
Weiterführende Links
https://www.ruby-lang.org/de/documentation/installation/
https://wiki.ubuntuusers.de/snap/
Quellen
https://www.ruby-lang.org/de/news/2018/11/08/snap/
https://rvm.io/rvm/install
https://github.com/rvm/ubuntu_rvm
https://rvm.io/rubies/installing
https://rvm.io/rubies/list
https://rvm.io/rubies/upgrading
https://rvm.io/rubies/removing