Ruby 1.9.x EL 6-on

Számomra nagyon fontos a programozási nyelv szintaktikája. Mostanában sokat nézegettem különböző nyelveket (Lisp, Scala, Lua - csak hogy párat említsek), és eddig nem találtam egyetlen olyat sem, amely Ruby közelébe érne _számomra_.

Hogy miért Ruby-ban programozok, azt ez a leírás pontosan leírja, mellyel teljesen egyetértek. Nyilván nem mindenhol és nem mindenkor lehet megtenni, hogy eszközt választunk egy feladathoz és nem fordítva, de személy szerint arra törekszek, hogy csak olyan dolgokkal foglalkozzak, ahol a számomra tetszetős eszközöket használhatom.

Mióta visszaálltam SL 6-ra, Ruby 1.8.7 van alapból. Tavaly augusztusban egy kérvény is volt RH felé, hogy szállítsa már a 6-os verzióval Ruby 1.9.x-et. Sajnos elutasították.

Fejlesztéshez szükségem van 1.9-re (mindezt stabil OS ágon akarom), ezért elkezdtem körbenézni és megtalálni a legjobb megoldást. Ez a bejegyzés sajnos elég jól összefoglalja a szerencsétlen állapotát Ruby-nak Python-hoz képest, és hogy ebből a szempontból mennyire hátrányban van. Ugye EL és Ubuntu is szervesen használja OS szinten Python-t, ezért sokkal kevesebb a szívás vele mint Ruby-val (nem beszélve Rails-ről, ha valaki használja - én egyelőre nem).

Megoldási kísérletek:

1) Lefordítottam forrásból. Meghökkentő, hogy nem találok hivatalos PGP aláírást a tarball-okhoz. 1.9.3 nem jól működik fordítás után (yum groupinstall "Development tools" után már nem volt függőség probléma, fordítás közben sem dobott semmilyen hibát, mégis run-time komponenseket nem talált). Ezt most inkább nem részletezem. Gondolom ezer dologra kellene figyelni a fordításkor a path-ok helyes beállításától kezdve a fordítási kapcsolódik.

2) Kerestem repo-t de nem volt megfelelő, és 1 emberes 3rd party repo nem érdekel - Epel és RPMForge meg nem szállítják Ruby-t.

3) VM? Inkább nem.

4) Egyéb csomag készítő gányolások? Nem.

4) bootstrap? Igen!

Mi a febootstrap?: "...febootstrap is a tool for building supermin appliances. These are tiny appliances [similar to virtual machines], usually around 100KB in size, which get fully instantiated on-the-fly in a fraction of a second when you need to boot one of them."

Másképp fogalmazva, lehúzza a csomagokat egy mappába az összes szükséges rendszer komponenssel, melybe chroot-olhatunk.

su -c "yum install febootstrap"
febootstrap -i ruby -i ruby-irb fedora-17 /home/user/fedora
su -c "chroot /home/user/fedora"
ruby --version

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

Megjegyzések:
- febootstrap használata: febootstrap -i csomagok fedora_verzió chroot_mappa
- nem kell root jog a bootstrap futtatásához: "...febootstrap does not need to be run as root. If for some reason you do run it as root, then it works slightly differently and may have side effects such as stopping or starting system daemons."
- minden csomag és szoftver hivatalos forrásból származik
- ezzel nem kell VM, és a Fedorához illő jól összecsiszolt fejlesztői környezetet kapunk, melyen bármit tesztelhetünk (280 MB lett a mappa méret 64 biten)
- a környezet frissítése is egyszerű egy chroot + yum update paranccsal, ha nagyobb fedora rendszert huzatunk le vele a core komponensekkel együtt

Másik verzió:

su -
yum install febootstrap
febootstrap -g Base fedora-17 /opt/fedora
chroot /opt/fedora
mount -t proc proc /proc
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
yum update
yum install ruby ruby-irb
adduser user
su user
ruby --version