Og hér kemur enn eitt megabætið af þvaðri.
** Fyrirmáli ** (Letihaugar, farið beint í *Aðalefni*)
Mig langar til að deila með ykkur uppgötvun minni sem átti sér
stað fyrir sirka hálfu ári. Því er svo komið að ég er almennt
talsverður öfgamaður í eðli mínu, þrátt fyrir að hafa þá
mótsagnakenndu skoðun að öfgar séu almennt af hinu illa. En
allavega, á þessum tíma notaði ég Red Hat. Og eins og kunnugir
vita notar Red Hat hinn annars prýðilega pakkastjóra RPM (sem
stendur fyrir “_Red Hat _Package _Manager”). Og þá vaknaði
spurninginn. Ætlar Helgi að hafa *allt* í RPM, eða *ekkert* í RPM.
Ég trúi á vitneskju og fræðslu, svo ég tók hinn fyrri kost, og
þetta gerði það auðvitað að verkum að ég þurfti að læra að búa
til RPM pakka úr tarboltum, sem ég auðvitað gerði. Þetta gekk
ágætlega þar til ég var búinn að fá dálítið nóg af því að þurfa
að uppfæra annan hvern tarbolta upp í RPM sjálfur, eða jafnvel
bíða einfaldlega eftir nýrri útgáfu af RPM pakkanum ef pakkinn
var of flókinn (sem kom reyndar sjaldan fyrir, en þó nokkrum
sinnum). Mjög óþolandi.
En ég fór virkilega að spyrja mig hvurn árann ég væri eiginlega
að pæla þegar ég gerði mér grein fyrir því að ég hef það fyrir
vana að vistþýða (compile) allt draslið sjálfur hvort sem er.
Þ.e.a.s., ég náði aldrei í *.i386.rpm eða *.ppc.rpm, heldur
*.src.rpm og vistþýddi það svo yfir í *.i386.rpm eða *.ppc.rpm
eftir því hvort átti við. Eins og flest sem einkennir venjur
mínar og hafi í Linux-heiminum; “Pointless but cool.”. Trúarbrögð
held ég sé alveg við hæfi að kalla þetta. Enda þarf maður að vera
ofsatrúi til að nenna að nota Linux sem vinnustöð eins og er.
Allavega, svo ég fer að leita að öðrum kostum en RPM. Og ég prófa
Debian, og er eitthvað… ekki alveg að fíla það, af sömu ástæðum
og RPM, þó að Debian pakkastjórinn sé reyndar algert æði, og ég
verð að mæla með að menn prófi Debian að gamni einhvern tíma.
Eftir var sú hugmynd að setja einfaldlega allt inn í tarboltum,
en það fannst mér vitavonlaust þar sem það væri endalaust vesen
að fjarlægja pakkana og að vita hvaða pakkar væru innsettir.
Engan veginn nógu gott fyrir mig.
En ég fann græju sem hét eitthvað… sem ég man ekki. Hún var
soldið töff. Þá breytti maður ‘/usr/bin/install’ í
'/usr/bin/install.gnu' og setti inn nýtt ‘install’ forrit sem
fylgdist með því hvert ‘make install’ var að setja skrárnar, og
skrifaði niður skráarheitin ásamt MD5-summu í skrá sem hét
/var/lib/[manekki]/[pakkanafn]-[útgáfa]. Það var eðalgræja, fyrir
utan það að auðvitað nota rúmlega nokkur forrit ekkert
'/usr/bin/install', og var því græjan gagnslaus í þeim tilfellum.
Dæmi um slík tilfelli eru BitchX og Apache. Í þeim tilfellum
þurfti maður einfaldlega að skoða úttakið úr ‘make install’, og
keyra ‘md5sum’ á skrárnar og rita niður í skrá sjálfur. En því
verkefni var einmitt hætt vegna þessa að höfundurinn kynntist
Encap aðferðinni svo hann sá ekki ástæðu til að halda dæminu
lifandi.
** Aðalefni **
En svo finn ég Encap. http://www.encap.org. Og Encap er ekki
forrit, heldur aðferðafræði. Og til þess að vinna í nafni
þessarar aðferðafræði er að finna nokkur forrit, meðal annars
eitthvert Perl rit. Sjálfur nota ég forrit sem heitir ‘epkg’ og
er skrifað í hinu prýðilega máli C.
Gert er ráð fyrir því að innsett sé frá source kóða (en binary
pakkar ættu alveg að ganga ef þeir eru settir á réttan stað).
En sá staður er að sjálfgefnu
/usr/local/encap/[pakkanafn]-[útgáfa]. Síðan er keyrt 'epkg
[pakkanafn]' og græjan setur symlinka inn í /usr/local eftir því
sem við á. ‘/usr/local/encap/apache-1.3.19/bin/apachectl’ er
symlinkað í ‘/usr/local/bin/apachectl’ og svo framvegis. Og ef ég
ætlaði síðan að taka Apache út, myndi ég gera ‘rm -rf
/usr/local/encap/apache-1.3.19; epkg -c’ og forritið ‘epkg’
þrífur upp skítinn eftir mig, þ.e.a.s. symlinkana sem benda ekki
á neitt sökum þess að Apache var hent út um gluggann.
Það þarf samt að sjálfsögðu að passa að forritið lendi á réttum
stað. Flest forrit nota Autoconf, og staðsetningu þeirra er
auðveldlega hægt að skilgreina með því að breyta hinu svokallaða
prefixi.
Dæmi um uppsetningu:
# ./configure –prefix=/usr/local/encap/apache-1.3.19
# make
# make install
# epkg apache
En nú er alveg slatti af forritum sem nota ekki Autoconf, og þá
þarf yfirleitt að breyta einni eða fleiri breytum í ‘Makefile’
sem ‘make install’ skipunin tekur tillit til. Ég man ekki til
eins einasta forrit sem er ekki a.m.k. hægt að breyta á þennan
hátt ef höfundur forritsins hefur tekið þá undarlegu ákvörðun að
nota ekki Autoconf. Nema jú Qt, sem getur gortað af
heimskulegasta innsetningarferli sem ég hef nokkurn tíma kynnst,
en meira um það síðar.
** Undantekningar **
Qt:
Einstaka forrit eru gerð af fólki sem dettur ekki í hug að við að
dreifa forriti gæti hugsast að einhver vilji innsetja það, og því
eru notuð vægast sagt umdeilanleg innsetningarforrit. Eins og ég
minntist á er ein helsta undantekningin Qt, sem er library sem er
prýðilegt til síns brúks, en maður þarf að fara fáránlega leið
til að setja það inn. En með hjálp leiðbeininga Qt sjálfs getið
þið auðvitað komið því á réttan stað, þ.e.a.s. inn í
/usr/local/encap/qt-[eitthvað]. Þið þurfið bara að hafa það
sérstaklega í huga þar sem Qt notar ekki Autoconf eða einu sinni
skikkanlegan ‘Makefile’. Qt innsetningin er samt meira að segja
svo heimskuleg að það *er engin* sjálfgefin staðsetning, og því
ættu menn að geta reddað sér með leiðbeiningum Qt library-isins
sjálfs.
KDE:
KDE er annað sem þarf að minna á. Innsetningarferlið sjálft er
hér allt í lagi. En til dæmis ef ég ætlaði að setja upp Gnome í
gegnum Encap, þá myndi ég hafa /usr/local/encap/gnome-libs-1.2.1,
/usr/local/encap/gnome-core-1.2.1,
/usr/local/encap/gnutella-[eitthvað] og svo framvegis. En KDE
forrit, af einhverjum ástæðum, vilja alltaf vera í sömu möppu og
KDE dreifingin sjálf, sem er auðvitað fáránlegt, en ekki banvænt.
Þetta þýðir að þið setjið alla KDE pakkana inn í
/usr/local/encap/kde-2.1.1, í staðinn fyrir að vera með þá
aðskilda. Athugið að þið þurfið þá yfirleitt (eða alltaf) að
setja KDE forrit inn í /usr/local/encap/kde-2.1.1. Ég held að
þetta sé vegna þess að þeir sem eru að forrita með KDE libin séu
að öllu jöfnu að nota KDevelop, sem af einhverjum ástæðum krefst
þessa.
Ég komst framhjá þessu einhvern tíma með því að stilla KDEDIR sem
/usr/local/encap/kde-2.1.1 (# export
KDEDIR=/usr/local/encap/kde-2.1.1), en fyrst að forritarinn gerir
ekki ráð fyrir því að maður taki aðra möppu, eru miklar líkur á
að maður lendi bara í vandræðum seinna meir í innsetningunni (þá
væntanlega við keyrslu ‘make’ og þá er villan væntanlega sú að
'make' finni ekki KDE library-in).
—–
Þetta er það eina af undantekningum sem ég man eftir í
augnablikinu, enda eru þær fáránlega sjaldséðar, sem betur fer.
Ef þær verða fleiri sem ég veit um, mun ég láta ykkur vita í
svari við þessari grein.
Á meðan… njótið.