Miért ne telepítsünk forrásból?

Ezt a rövid eszmefuttatást annak a témának szeretném szentelni, hogy miért érdemes kétszer is átgondolni a programok forrásból történő telepítését bináris alapú disztribúciókon. Időnként felmerül az igény a programfordításra, de érdemes figyelembe venni ezt a néhány tanácsot, vagy ajánlást a témával kapcsolatban.

Programok forrásból való telepítésének első szabálya:
Ne telepítsünk forrásból!

Első ránézésre ez egy meghökkentő tanács, de később reményeim szerint világos lesz értelme.
Miért ne?

Ugyanis forrásból történő telepítéskor számos problémával szembesülhetünk:
Ezek a problémák főleg a csomagkezelő használatának mellőzéséből adódnak. Nem vehetjük igénybe annak szolgáltatásait. Mivel telepített programunk nem kerül bele a csomagkezelő rendszer adatbázisába, így nem tudhatjuk pontosan megállapítani, hogy mely fájlokat és hová telepített. Sok esetben az eltávolítása is problémás lehet. Arról nem is beszélve, hogy a frissítés és nyilvántartás is nehézkes. Az egyes frissítésekről magunknak kell gondoskodnunk, nem lesz segítségünkre a terjesztés csomagkezelő rendszere. Főleg akkor jelentkezhetnek problémák, ha létező csomagot akarunk helyettesíteni. Ekkor akár inkompatibilitás is jelentkezhet a már telepített összetevőkkel és függőségekkel. Egy idő után teljesen átláthatatlanná és kaotikussá válhat a rendszer felépítése.
Sokkal kényelmesebb a dolgunk, ha a csomagkezelő rendszerre bízzuk a programok telepítését, frissítését és nyilvántartását.
Érdemes megemlíteni még azt is, hogy a terjesztő általában valamilyen tesztelési rendszert is alkalmaz csomagjaira. Ha ezt is mellőzzük, akár komoly biztonsági problémákkal is szembesülhetünk.

Mit tegyünk helyette?

Helyezzük előtérbe az adott disztribúció saját csomagjait. Amennyiben megtalálható a keresett csomag a tárolók valamelyikében, azt használjuk. Esetleg tovább kereshetjük valamelyik harmadik féltől származó csomagtárolóban. A legtöbb disztribúcióhoz elérhetőek kiegészítő csomagok ezen tárolókból. Tájékozódjunk ezekről a terjesztés honlapján, közösségi oldalain.

Amikor megkerülhetetlenné válik...

Bizonyos esetekben mégis elkerülhetetlen fordítás. Nem találjuk meg a nekünk megfelelő programot. Valamilyen okból újabb verzióra van szükségünk. Netán kimaradt valami az adott csomagból amire elengedhetetlenül szükségünk van. Ekkor sem kell feltétlenül a megismert problémákkal megküzdenünk. Ilyen esetben érdemes megfontolni az RPM csomag készítését. Ezáltal megkönnyítjük a program nyilvántartását és eltávolítását. Nem mellékesen közzé is tehetjük csomagunkat, így megkönnyítve azok dolgát, akik hasonló cipőben járnak. Számos leírás található, mely megkönnyíti a csomagkészítést. A korábban már említett nem hivatalos tárolók karbantartóival is felvehetjük a kapcsolatot, és amennyiben csomagunk megfelel az elvárásaiknak, bízhatunk benne, hogy közzéteszik azt. Nem mellékesen ezáltal vissza is adhatunk valamit annak a közösségnek, akitől oly sokat kaptunk már. Bátran kopogtathatunk tehát náluk, általában szívesen fogadják az új csomagokat, csomagkészítőket.
Hogyha csak hiányzik valami a kiszemelt csomagból, akkor próbálkozhatunk az SRPM újrafordításával is. Ezeket általában könnyen elérhetővé teszik a disztribútorok.
Rendkívül ritkán, de azért előfordul, hogy egy rokon terjesztés csomagját telepítjük. Ezzel a módszerrel legalább annyira óvatosan kell bánni, mint a fordítással, ugyanis számos kompatibilitási problémát eredményez. De azért egy hajszálnyival jobb megoldás annál. Ilyeneket inkább a tapasztalt felhasználóknak érdemes megfontolniuk.

Az itt elmondottak elsősorban az olyan stabilitásra kifejlesztett rendszerek esetében igazak, mint a CentOS, vagy Red Hat Enterprise Linux, de a Fedoránál és egyéb bináris csomag alapú terjesztéseknél is érdemes figyelembe venni. Természetesen semmi nincs, ami megakadályozná a folyamatot, de érdemes még egyszer átgondolni a kínálkozó lehetőségeket.

A téma iránt érdeklődőknek ajánlom figyelmébe Jim Perrin blogbejegyzését, vagy a CentOS wiki vonatkozó részeit.

Hozzászólások

Rögtön azzal kezdeném, hogy alapvetően egyetértek Veled. A Linuxok óriási előnye például egyes kereskedelmi operációs rendszerekkel szemben a koherens csomagkezelés. Ugyanakkor belefutottam már olyan problémába, hogy valami nyilvánvaló programra lett volna szükségem. Ilyen volt például az, amikor különböző audioformátumot kell egymás között konvertálni. És most ne hivatkozzon senki a soundconverter nevű csodára, mert egyfelől bugos, emiatt aac formátumba nem lehet vele konvertálni, másfelől pillanatok alatt felnyomta a vérnyomásomat azzal, hogy a konvertálás paramétereként valamiféle képlékeny maszlagot lehet megadni, úgy mint Very Low, Low, Normal, High, Very High. Ez műszaki paraméterezés? Sem arról nem esik szó, hogy változó vagy konstans bitrátájú legyen az eredmény, s ha igen, mennyi, sem arra nem látom a lehetőséget, hogy ezen kifejezések mögé magam definiáljam a lame, oggenc, faac manual page-ei alapján, mit is szeretnék csinálni. Nagy kérés egy alkalmazástól, hogy én döntsem el, milyen paraméterezéssel működjön?

Végül is nem forrásból fordítás lett ezen programok GUI-jára a megoldás, hanem az, hogy találtam egy java-s programot erre a célra, jRipper a neve.

Én is kerülöm a forrásból fordítást részint biztonsági okokból, részint azért, mert nyűgös dolog, fel kell rakni egy rakás *-devel csomagot, de nagyon ritkán szükség lehet rá. Ilyen volt még a cutecom, ő egy nagyon kellemes felületű soros terminál program, de örömmel látom, már a repókban van.

Aztán ott van az uninstallálás kérdése. Érdemes fennhagyni a csomag forrását, s egy make uninstall parancs leszedi, amit kell. Ami a közösséget illeti, az én esetemben nehezíti a dolgot a nyelvismeret hiánya - megértek dolgokat, de levelet nem tudok megírni angolul -, továbbá több ízben csalódtam már. Igaz, volt pozitív élményem is. Még tavaly történt, hogy az mceditben találtam egy bugot, jelentettem a bugzillán, sőt, javító patch-et is adtam hozzá, de még csak annyi visszajelzést sem kaptam, hogy hé, öreg, kösz, hogy ránéztél, kiadunk egy javított mc-t. Az ezzel való foglalkozásom az enyészeté lett.

Igazad van, a make uninstallal kapcsolatban. Bár fordult már elő velem, hogy:

make: *** No rule to make target `uninstall'. Stop.

:D
Úgyhogy nem egy életbiztosítás.

Az mcedites rossz tapasztalatból ne vonj le következtetéseket! Szívesen segítek(ünk) ilyen esetben a kapcsolatfelvételben. Másrészt meg az a program elég halott volt egy éve még. Mostanában kezdik megint foltozni, esetleg próbáld újra.
(A kósza beküldött patch-eket nem minden esetben szeretik.)

Azzal még kiegészíthettem volna az írást, hogy fordításnál lehet saját könyvtárat megadni célként:
/opt vagy még inkább: /opt/programnév leginkább: /home/user/programnév.
Ekkor az eltávolítás még egyszerűbb. A nyilvántartás is, de a frissítés még mindig kérdéses.

Alapvetően én is a csomagból történő telepítést preferálom, még szerencs, hogy a meglévő repositoryk - főleg a fedoráé - elég jók. Nálam eddig inkább olyan esetben jött elő a forrásból történő telepítés, amikor mondjuk már megszűnt az adott release támogatása és valamilyen okból nem lehetet upgradelni a rendszert, de az adott programból szükség volt egy újabb verzióra. Vagy valami nagyon "egzotikus" dologra volt szükségünk, pl.: webszerver: PHP, MySQL fűszerezve Oracle támogatással, mellé egy kis opcode cache.

Webappz - http://webappz.hu

Nem tudok teljesen egyetérteni a fentiekkel. Kezdők és hozzánemértők esetén még lehet is igazad, de aki tudja mit csinál, annak nem szabad félnie a forrásból telepítéstől.
Az pedig, hogy RPM csomagot csináljak minden alkalmazásból, amelyet nem találok meg egyik vagy másik repositoryban, számomra teljesen felesleges időtöltésnek hangzik.

Ave, Saabi

Az általában igaz, hogy aki tudja, hogy mit csinál, annak nem kell félnie a forrásból történő telepítéstől, mert azért ez nem az ördögtől való dolog :)
Amúgy szerintem ez is inkább csak program és függősége válogatja. Minél kevesebb a függőség és az adott függőségek is elég stabilnak mondhatók, illetve ritkán frissülnek, akkor szerintem nem olyan vészes a forrásból történő telepítés.

Webappz - http://webappz.hu

Ugyan nem vészes, de én például tisztábbnak érzem a rendszert, ha nincs fenn forrásból semmi rajta. Régebben több dolgot is fordítottam forrásból, ma már szinte semmit. Ezt egyfajta fejlődésként élem meg, így könnyebb kézben tartani, adminisztrálni az operációs rendszert. Tegyük hozzá, a Fedora is sokat fejlődött, nagyon sok csomag megtalálható a repository-kban. De az is lehet, hogy csak lustább lettem az évek folyamán. :) Egyedül az rt2500 wireless interface modult fordítom forráskódból, mert ami a kernelben van, az a tapasztalataim szerint szánalmas. (Vagy én bénázok, de kétlem, hogy az az én hibám, hogy spontán lelassul a kommunikáció, furán viselkedik az egész. A régi driver cvs verziója ugyanakkor mindig jól működik.)

Mondhatni tisztább, szárazabb érzés :D

Szerintem éppen ezért a Fedora ideális desktop és fejlesztői gépnek, mert ami ezekhez a feladatokhoz kell, azokból az alkalmazásokból szinte mindig a legfrissebb verziót tartalmazza és mindezt RPM csomag formájában. Mindezt erősítette az RPMfusion repository létrehozása is, tehát elmondható, hogy igyekeznek minél többet adni a felhasználóknak.

Természetesen az egyedi igények és sajátságok miatt még mindig ott van a forrásból történő telepítés lehetősége :)

Amúgy a lustaság fél egészség és mint tudjuk ... :D

Webappz - http://webappz.hu