csiszarattila.com / Rubysztán

Git fordítása OSX Tiger alatt (SVN modullal)

Rendhagyó módon nem egy Rubys témájú bejegyzéssel nyitom meg az oldalt, de remélem elnézőek lesztek. Terveim szerint egyébként sem csak a kedvenc programozási nyelvünkről szólna ez a blog, időnként előfordulhat, hogy körüljárok egy hasonlóan érdekes témát. Ezúttal a Git verziókezelő telepítésén a sor.

Hogy a téma mennyire aktuális azt az mutatja, hogy az utóbbi időben egyre több Rubys projekt - többek között a Rails is - áttért a Git verziókezelőre és nem véletlenül.

(Ha időm engedi és ti is jónak látjátok írok majd egy Git gyorstalpalót, bár én magam sem régóta használom - egyébként nagy megelégedettséggel.)

Az első probléma amit le kell küzdenünk, hogy feltelepítsük rendszerünkre a verziókezelőt. Mivel én a Mac OSX Tiger, 10.4-es verzióját használom és csak Leopárd(OSX 10.5) alá adtak ki előfordított csomagokat, parancsorból kellett telepítenem. Ráadásul szerettem volna a korábbi SVN-es projekteimet is importálni, amelyet csak némi hekkelés árán sikerült megoldani.

A telepítés menete tehát elsősorban Mac OSX 10.4 - Tiger operációs rendszert használóknak készült, de szerintem bármilyen *nix alapú rendszerre megállja a helyét.

(Természetesen telepíthetjük a Git-et Fink-en vagy Macports-on keresztül is, ez a bejegyzés viszont azoknak szól akik nem szeretik a csomagkezelőket, vagy csak az éppen aktuális forrást szeretnék használni).

A telepítés menete

Szerencsére nem sok függősége van a Git-nek, ezek többsége előtelepítve megtalálható az operációs rendszer mellett, talán csak az expat jelent kivételt ez alól. (A Git függőségeinek a többsége amúgy is csak a dokumentáció többféle formátumra alakítása miatt kell.)

Tehát töltsük le a legfrissebb Git forráskódot - a bejegyzés írásakor ez a 1.5.5-nek felel meg, de a telepítés megállja a helyét a későbbi verziókra is -, majd a 'szokásos' telepítési forgatókönyvet követve:

./git-1.5.5
./configure --prefix=/usr/local/git-1.5.5
make
sudo make install

Hozzunk létre egy szimbolikus linket a program könyvtárára, így egyszerűbben megadhatjuk az elérését parancssorból, új verziók telepítésekor pedig elég csak a linket módosítani:

ln -s /usr/local/git-1.5.5 /usr/local/git

Ahhoz, hogy a Git parancsait ne kelljen ezen a hosszú útvonalon keresztül elérnünk, és kiadásukkor a héj megtalálja automatikusan őket, hozzá kell adnunk a PATH környezeti változóhoz a fent létrehozott hivatkozás bin könyvtárát:

export $PATH="$PATH:/usr/local/git/bin/"

A fenti lépéssorozat a legtöbb program telepítésénél járható út, akinek tehát nem ismerős érdemes megtanulnia, később pedig utánajárnia, hogy miért is működik mindez úgy, ahogy.

SVN repók importálása Git alá.

Ha Subversionről akarunk átállni és szeretnénk a korábbi projekteinket használni Git alatt is, a git-svn parancsot kell használnuk.

Nos én már az első használatakor problémába ütköztem, ugyanis az alábbi hibaüzenetet kaptam:

Can't locate SVN/Core.pm in @INC (@INC contains: ... )

A git-svn ugyanis Perl nyelven íródott: az SVN Perl moduljára épül. Használatához ezért telepítenünk kell az SVN SWIG Perl modulját, amihez szükségünk lesz az SVN forráskódjára. Ha letöltöttük:

./subversion_forraskod
make swig-pl
sudo make install-swig-pl

A részletes utasításokat én is erről az oldalról szedtem.

De hiába, a git-svn parancs nálam ismét csak elszállt, ezúttal egy bus error-ral.

A forráskódból való telepítéskor gyakran szembesül az ember furcsának tűnő problémákkal, amelyek megoldása sokszor órákig tartó keresgélést és információgyűjtést jelent. Amikor azt hihetnénk megoldást találtunk egy adott problémára egy újabb hibába is futhatunk, de a legfontosabb, hogy ekkor se adjuk fel (két hajtépés közben azért tartsunk egy kis szünetet:). A frusztráló problémák megoldása nem csak elégedettséggel tölthet el bennünket, hanem sok hasznos tapasztalattal is felvértezhet.

Kis keresgélés után - az SVN install utasítása alapján - kiderült, hogy csak a SWIG 1.3.29-es verziói alatt stabilak a nyelvi bindingek. Telepítsük tehát fel:

./swig 1.3.29_forraskod
./configure --with-perl=/usr/bin/perl
make
sudo make install

A SWIG egy szabványos program, eltérő nyelvek forráskódjának a konverziójára; például C nyelvű forrásokódokat akár Ruby nyelvre is át tudunk "fordítani" a segítségével.

A telepítése után ismét állítsuk elő a szükséges Perl modulokat:
subversion
./configure --with-perl=/usr/bin/perl (!)
make
make swig-pl
make check-swig-pl (Ha itt minden OK akkor rendben vagyunk)
sudo make install

Ezek után mennie kell az SVN repók importálásának Git-re, és fogadjuk meg, hogy soha nem is térünk vissza hozzájuk:)

Megjegyzés(2008.12.23.): Ezt a cikket elég sok magyarázó szöveggel láttam el az első változata óta, a parancsokat viszont nem próbáltam ki újra, tehát lehetséges, hogy többé már nem állják meg a helyüket - elsősorban a git-svn telepítésére gondolok.

Megjegyzés(2008.12.24.): Ha a Git 1.6.0.6-ra frissítésekor a make install parancs kiadása után az alábbi figyelmeztetést kapjuk:

!! You have installed git-* commands to new gitexecdir.
!! Old version git-* commands still remain in bindir.
!! Mixing two versions of Git will lead to problems.
!! Please remove old version commands in bindir now.

Akkor törüljük a régi binárisokat a /usr/local/git/bin könyvtárból:

rm -f /usr/local/git/bin/*

És futtassuk újra a sudo make install parancsot.