Debian: Neue Ruby-Version installieren

Debian Wheezy kommt noch mit Ruby 1.9.3, welches bei aktueller Software, beispielsweise GitLab, nicht mehr ausreichend ist. Hier wird zum gegenwärtigen Zeitpunkt mindestens die Ruby-Version 2.1 benötigt, welches jedoch nicht als fertiges Paket zur Verfügung steht. Man muss es sich demnach selbst kompilieren, was ich in diesem Artikel erklären möchte.

Zuerst einmal sollte man alle benötigten Pakete installieren:
aptitude install checkinstall build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev

Dann lädt man die aktuellste Version von Ruby vom FTP-Server herunter. In meinem Fall ist das Version 2.2.2:
wget [url]ftp://ftp.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz[/url]

Nun wird das heruntergeladene Paket entpackt und anschließend in das Verzeichnis gewechselt:
tar xfz ruby-2.2.2.tar.gz && cd ruby-2.2.2

Anschließend wird es konfiguriert:
./configure --prefix=/usr/local

Mit make wird es nun kompiliert. Der Präfix -j gibt die Anzahl der Threads an, die für diesen Vorgang genutzt werden (Standard: 1). Da ich einen 4-Kern-Prozessor mit Hypherthreading besitze, gebe ich demnach -j 8 an (jeder Prozessorkern hat 1 Thread):
make -j 8

Abschließend wird das Paket mit checkinstall installiert. Im Vergleich zu make installist der Vorteil, dass checkinstall die Debian-Paketverwaltung nutzt und das Paket auch ganz normal über selbige zu entfernen ist. Außerdem erstellt es direkt eine Paketdatei, sodass eine spätere Kompilierung bei einer Neuinstallation nicht mehr notwendig ist.
Nutzt man nun nur den Befehl checkinstall ohne Parameter, erhält man jedoch folgenden Fehler:

/root/ruby-2.2.2/lib/fileutils.rb:864:in `utime': No such file or directory @ utime_internal - /usr/local/bin/ruby (Errno::ENOENT)
	from /root/ruby-2.2.2/lib/fileutils.rb:864:in `block in install'
	from /root/ruby-2.2.2/lib/fileutils.rb:1570:in `block in fu_each_src_dest'
	from /root/ruby-2.2.2/lib/fileutils.rb:1584:in `fu_each_src_dest0'
	from /root/ruby-2.2.2/lib/fileutils.rb:1568:in `fu_each_src_dest'
	from /root/ruby-2.2.2/lib/fileutils.rb:859:in `install'
	from ./tool/rbinstall.rb:158:in `install'
	from ./tool/rbinstall.rb:334:in `block in <main>'
	from ./tool/rbinstall.rb:757:in `call'
	from ./tool/rbinstall.rb:757:in `block in <main>'
	from ./tool/rbinstall.rb:754:in `each'
	from ./tool/rbinstall.rb:754:in `<main>'
make: *** [do-install-all] Fehler 1

**** Installation fehlgeschlagen. Breche Paket-Erzeugung ab.

Räume auf...OK

Auf Wiedersehen!Code-Sprache: PHP (php)

Das liegt an einem Fehler im Programm checkinstall, welcher jedoch mit folgendem Befehl umgangen werden kann:
checkinstall --fstrans=no -D make install

Man erhält nun folgende Auswahl:

*****************************************
**** Debian package creation selected ***
*****************************************

Das Paket wird entsprechend dieser Vorgaben erstellt:

0 -  Maintainer: [ root@KittMedia ]
1 -  Summary: [ Package created with checkinstall 1.6.2 ]
2 -  Name:    [ ruby ]
3 -  Version: [ 2.2.2 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ ruby-2.2.2 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ ruby ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern:Code-Sprache: CSS (css)

Da hier der Paketname (2) nur als ruby angegeben ist, das bisherige offizielle Paket jedoch ruby1.9.3 heißt, würde eine Installation in dieser Konfiguration zu einem Fehler führen, da für das System das bereits installierte ruby1.9.3 neuer ist als das Paket ruby. Hier wird demnach mit der Taste 2 und dem abschließenden bestätigen mit Enter diese Zeile bearbeitet. In meinem Fall nenne ich das Paket einfach ruby2.2.2.

Dann sollte die Installation fehlerfrei durchgelaufen sein. Mit dem Befehl ruby -v wird das noch einmal verifiziert. Bei mir erscheint dann folgendes nach erfolgreicher Installation:
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

Außerdem ist im Verzeichnis, in dem man die Installation ausgeführt hat, noch die Paketdatei abgespeichert. In meinem Fall unter dem Dateinamen ruby2.2.2_2.2.2-1_amd64.deb.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert