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 install
ist 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
.