Szerző: surmo

2000. május 19. 00:00

Csomagok és kezelésük

Valószínűleg sokaknak lehet segítségére, ha kicsit részletezzük ezt a témát. Mondhatni, ez az egyik leggyakrabban felmerülő kérdéscsoport, és sajnos sok komolyabb probléma forrása is. Ezért most megpróbálok rövid útmutatót adni a használatukhoz, és megemlíteni a fontosabb tudnivalókat.

Linuxhoz némiképp hasonló szervezésben találhatók a programok és kiegészítőik, mint Windows alá, tehát egy tömörített file-ban van maga a program, a dokumentáció, és a szükséges további állományok. Annyi a különbség, hogy a frissen telepített disztribúciók az első installált bittől az utolsóig csomagokból épülnek fel, amelyeknek a formátuma szabványosítva van, és egy különálló, rendkívül sokfunkciós segédprogram van az installálásra, törlésre, és egyéb funkciókra. Ez a segédprogram a csomagkezelő, aminek két változata terjedt el, az rpm (RedHat, SuSE, Mandrake, stb..) és a dpkg (Debian, Corel).

A csomagkezelő feladata, hogy egyszerűen és egységesen lehessen installálni, törölni és frissíteni a gépünkön levő programokat. Információt kérhetünk róluk, megnézhetjük, hogy egy-egy adott csomag milyen állományokat tartalmaz, de visszafelé is kereshetünk, hogy egy file melyik csomaghoz tartozik. Ezeken kívül a csomagok függőségi információkat is tartalmaznak. A csomagkezelő program saját adatbázist épít magának, amiben feljegyzi a telepített csomagokat és róluk néhány fontosabb információt. Egy új program installálásakor megkérdezi a csomagot, hogy neki milyen egyéb library-k kellenek, és ha ezek nincsenek fönt a gépen, reklamál. Ebben az esetben fel kell tennünk azt a csomagot, amelyben a keresett cuccos található. Ha a hiányzó csomag nevét mondja, könnyű dolgunk van. Nehezebb az eset akkor, ha csak az állományt nevezi meg, bár általában a neve elég beszédes, így például, ha a libncurses.so.5-t hiányolja valami, akkor azt az ncurses-... csomagban találjuk meg. Ha ezzel nem jutunk eredményre - ez azért szerencsére ritka eset -, a legjobb segítség egy másik linuxon megnézni, hogy az adott file melyik csomag része; persze csak akkor, ha azon a bizonyos másik linuxon telepítve van.

A package-k elnevezése is szisztematikus. Egy Redhat-hoz tartozó csomag neve például így néz ki:

név-verziószám-release.architektúra.rpm; egy példa: gimp-1.0.4-3.i386.rpm

A Debian csomagok pedig:

név_verziószám-release.deb (pl.: gimp_1.0.4-2.deb), a csomag pedig az architektúrának megfelelő könyvtárban van.

[oldal:Hogyan keressünk?]

Az egyik legjobb módja egy új program beszerzésének, értelemszerűen, ha meglátogatjuk a vonatkozó homepage-t. Például, a legkedveltebb mp3- és egyéb lejátszó linuxra az xmms, hp-je a www.xmms.org. Általánosságban is igaz, hogy a nagyobb projectek oldalait jó eséllyel találjuk meg a www.projectneve.org címen. Itt többnyire letölthetjük a forrást, és az előre lefordított csomagokat is. Ha nem találunk saját oldalt kedvencünknek, van egy nagyon jól használható ftp-kereső itt. Sokféle kritériumot beállíthatunk, egyik legnagyobb előnye a keresőnek, hogy reguláris kifejezés (regular expression, regexp) alapján is lehet keresni.

Mivel a reguláris kifejezés nagyon hasznos állat, és talán sokaknak ismeretlen fogalom, megér egy kicsit bővebb részletezést. A számítástechnikai nyelvészet egyik alapvető eszközéről van szó, egy remek mintaillesztési módszer. A szabályok korrekt leírása itt megtalálható, néhány gyakrabban használt dolgot emelnék ki belőle:
  • a . (pont) karakter tetszőleges karakterre illeszkedik, szerepe hasonló a fileneveknél megszokott ?-hez. Például a.c illeszkedik abc-re, adc-re, azc-re, és a6c-re is.
  • a * karakter az előtte álló karakter tetszőleges számú folytonos előfordulását engedi meg (így a 0-szori előfordulást is). Az a* illeszkedik tehát az üres sztringre (0 db a betű), de az a-ra, aa-ra, és az aaaaa-ra is.
  • az előbbi két pont folyományaként a .* kifejezés tetszőleges fajta és tetszőleges számú (akár 0) karaktert enged meg. A bc.*fg illeszkedik így a bcfg-re, bc32j4fg-re, és a bcdefg-re is. A Un*x shellek a fileneveknél a * karakterrel valósítják meg ezt a funkciót. Zárójelben jegyzem meg, ez sokkal több és komplexebb lehetőséget biztosít, mint a command.com a maga *-jával. Szerencsére erre már sokan rájöttek, így létezik bash.exe dos/windows környezetben is.
  • a szögletes zárójelek közé tett karakterek bármely karaktert helyettesíthetnek, amelyik a zárójelek között szerepel, a felsorolást pedig rövidíteni lehet kötőjel használatával. Így a [0-9] illeszkedik bármely számjegyre, a [0-9a-z] pedig bármely számjegyre vagy kisbetűre. A [0-9]* kifejezés tetszőleges hosszúságú számsorozatot jelöl.
Az itt felsorolt szabályokkal már nagyon hatékonyan lehet használni a keresőt. Ha például az egyik legelterjedtebb CD-író programot, az Xcdroast-ot keressük rpm-ben, valami ilyesmit érdemes írni a kereső mezőbe:

xcdroast.*6.rpm

A 6-osra azért van szükség, mert az xcdroast.*rpm kidobja az xcdroast-....src.rpm-et is, ami a forrást tartalmazza rpm csomagban, és erre nekünk csak akkor van szükségünk, ha valamit át akarunk írni a programban. Így viszont az ix86 rpm-ek közül fog válogatni. A dátum szerinti rendezést bejelölve jó esélyünk van arra, hogy a legfrissebb bináris csomagokat fogja kidobni a kereső.

[oldal:Néhány alapfunkció]

Az alapvető funkciók közé tartozik az installálás, törlés és frissítés. Mind dpkg, mind rpm esetén a -i kapcsoló jelzi, hogy installálni szeretnénk. Ha minden rendben van, a csomagot a csomagkezelő kibontja, és a benne lévő állományokat a megfelelő helyre teszi. A package-t letörölni az rpm -e csomagnév vagy dpkg -r csomagnév paranccsal lehet. Érdemes olvasgatni a manual-t, sok fontos és hasznos dolgot tudhatunk meg belőlük.

Talán a legfontosabb dolog, hogy ne gányoljuk össze a linuxunkat. Csak akkor installáljunk magunk által fordított dolgokat (kivéve talán a kernelt), ha minden kötél szakad, mert sehol sincsen csomag, vagy ha átírjuk a forrást. Azért fontos ez, mert a gépen található programoknak illik konzisztensnek lenniük a csomagkezelő adatbázisával. Ha pedig mi magunk fordítunk és installálunk valamit, akkor ezekről a csomagkezelő nem fog tudni, és jobb esetben csak reklamál később, hogy hiányzik neki valami, ami pedig már fönt van a gépen, rosszabb esetben felül is írhatja az általunk installált dolgokat, vagy azok egy részét.

Sok esetben érdemes odáig is elmerészkedni - főleg nagyobb lélegzetvételű programcsomagok esetén -, hogy mi magunk csináljunk belőle a disztribúciónak megfelelő csomagot, és azt telepítsük fel. Ezzel a későbbi frissítéseknél is sok bosszúságot spórolhatunk meg magunknak. Ha pedig ez körülményes, vagy csak nem tetszik az ötlet, javasolt a /usr/local könyvtárba tenni kedvenc cuccosunk dolgait, itt ugyanúgy találhatók bin, lib, stb. alkönyvtárak, de természetesen tetszőleges újabbakat hozhatunk létre mi magunk is. Ez a terület azért jó házi használatra, mert a csomagkezelők ide nem szoktak írni, hivatalos csomagok itt nem tárolnak állományokat, így az összeveszést elkerülhetjük.

Frissítés: Szándékosan nem akartam belemenni néhány dologba a már jól ismert disztribúciós háborúk elkerülése végett, de Fiery mester felhívta a figyelmemet, hogy a Debian egyik legnagyobb előnyéről nem ejtettem szót. Való igaz, a Debian rendelkezik egy olyan funkcióval, amivel az rpm-et használó disztribúciók nem: az apt-get program és a dselect nevű kezelőfelülete egy jól használható segédeszköz a csomagok telepítéséhez. A disztribúció csomagjainak adatai egy Packages file-ban vannak, ennek segítségével tudja az apt, hogy mik szükségesek az adott csomag installálásához, és mindezt automatikusan el is tudja végezni. Gyors internet-kapcsolattal megáldottak számára pedig az automatikus csomagfrissítés tényleg nagy könnyebbséget jelent.

Mivel nem akarom magamat elkötelezni - legalábbis nyilvánosan - egyik disztribúció mellett sem, úgy érzem korrektnek, ha megemlítem, hogy - bár a Debiannak az apt vitathatatlan előnye -, a Redhat alapú disztribúciókkal ellentétben a Debian nem rendelkezik egy olyan hatékony és egységes konfiguráló felülettel, mint például a Linuxconf/Netconf. A SuSE yast/sax párosa szintén hasonló funkciókat lát el, viszont, mint szinte mindenről, ennek használhatóságáról és hatékonyságáról is megoszlanak a vélemények. Remélhetőleg nincs már messze az idő, amikor a fent említett valamennyi hiányosság minden disztribúcióban orvosolva lesz.

Nagyon széles az a skála, amin az állásinterjú visszajelzések tartalmi minősége mozog: túl rövid, túl hosszú, semmitmondó, értelmetlen vagy semmi. A friss heti kraftie hírlevélben ezt jártuk körül. Ha tetszett a cikk, iratkozz fel, és minden héten elküldjük emailben a legfrissebbet!

a címlapról