A csomag egy bináris állomány, mely leginkább a win32 rendszeren lévő install programoknak felel meg. A csomagok önmagukban nem sokat érnek, szükség van egy kezelő programra, mely segít a csomag rendszerre való telepítésében. Ilyen programpáros debian alatt a dpkg és a dselect. A dselect egy karakteres felület, mely valamivel jobban kezelhető, mint a dpkg, de a dselect is a dpkg-t használja. A csomagokat négy jól elkülöníthető kategóriába sorolhatjuk: main: az ingyenes csomagok non-free: nem ingyenes programok, de nem mindenki számára non-US: Amerikán kivűl nem használható, igy általában nem ingyenesek contrib: olyan csomagok, melyek nem ingyenes csomagoktól függhetnek
Mikor az apt-ben megadjuk, hogy mely csomagokat hol találja a dselect, ezekre a dolgokra rákérdez, így érdemes ezekkel tisztában lenni, és elolvasni a csomagokhoz tartozó esetleges dokumentációkat.
Ez egy olyan parancssori program, amit a kapcsolóin keresztül kell vezérelni, és arra alkalmas, hogy a birtokunkban lévő csomagokat tudjuk installálni, esetleg eltávolítani vagy konfigurálni.
Egy csomag állapotai a következők lehetnek:
- feltelepitett és beállított (konfigurált): installed
- a telepítés elkezdődött, de vagy megszakadt vagy sikertelen volt: half-installed
- nem telepített: not-installed
- telepített, de beállítatlan: unpacked
- telepített, de a beállítások nem sikerültek teljesen: half-configured
- csak a konfigurációs fájljai vannak még meg: config-files
Mikor kiválasztunk egy csomagot, akkor annak három állapota lehet:
- kiválasztva telepítésre: install
- kiválasztva törlésre: deinstall
- teljes törlés, config-fájlaival együtt: purge ( a törlésre kiválasztáskor nem fogja törölni a csomag konfigurációs fájljait )
Ezen felül még két jellemzője lehet egy csomagnak:
- a csomagkezelő nem fog változtatni az állapotán: hold ( ez az eljárás nem ajánlott )
- újra kell telepíteni a csomagot, mert az megsérült, de még a rendszerben van: reinst-required
Ezen állapotok és jelzők a dselect programban látszódnak igazán, a jelöléseikről majd ott esik szó.
Mi is történik, ha lefutatjuk a dpkg programot? Telepítésnél: Első lépésben kicsomagolja a csomag ellenőrző fájljait, majd megnézi, hogy van-e a csomagnak más verziójú változata, ekkor telepítés előtt végrehajt egy ún. prerm scriptet. Majd, amennyiben szükséges akkor indít egy preinst scriptet az új csomagra. Ezek után kicsomagolja az új fájlokat, de előtte mentést készít a régi állapotról, hogy hiba esetén vissza tudja állítani a megelőző állapotot. Végül ha egy régebbi változat van felrakva, akkor az új installálása előtt a régire indít egy postrm scriptet, ami futása befejezéseként az új csomag preisnt scriptjét indítja el, majd konfigurálja az új csomagot.
Konfigurálásnál: Konfigurációs fájlokat kicsomagolja, a régiekről másolatot készít hiba esetére, majd az új csomag postinst scriptje fog futni, ha van rá igény.
Eltávolításnál: A prerm script futása után egy törlés hajtódik végre, majd a postrm scirpt.
A legáltalánosabb dpkg megadási formák: A csomag_neve ezekben az esetekben a csomagfájl teljes nevét jelenti kiterjesztéssel együtt! pl. : apache_1.3.9-13.1.deb Általában az '_' jel előtt a program neve, utána a verziószám áll, a kiterjesztés pedig azt mutatja, hogy debian csomagról van szó. (a RedHat csomagok kiterjesztése .rpm) Telepítések, eltávolítások:
dpkg -i | --install csomag_neve installálja az adott csomagot, és be is állítja.(installed állapot)
dpkg --unpack csomag_neve telepíti a csomagot, de nem állítja be. (unpacked állapot)
dpkg --configure csomag_neve beállítja a megfelelő csomagot, ha az előtte legalább unpacked állapotban volt.
dpkg --configure -a | --pending minden olyan csomagot konfigurál, ami előzőleg nem volt beállítva.
dpkg -r | --remove csomag_neve letörli a megadott csomagot, de a config-fájlokat nem! Ez igen hasznos abban az esetben, ha újra akarjuk telepíteni a csomagot, mert akkor használni tudja majd a régi config-fájlokat. Ha még a config-fájloktól is meg akarunk szabadulni, akkor adjuk meg a -purge kapcsolót. Itt is van természetesen -a illetve -pending kapcsoló, amelyek az összes telepített csomagot törlésre állítják be. (a /var/lib/dpkg/status fájlt használja erre a célra)
Információk beszerzése a csomagokról: ( Ebben a részben nem kell a csomagfájl teljes neve kiterjesztéssel együtt, elég a csomag tényleges neve pl. dpkg -l modutils )
dpkg --print-avail csomag_neve összes információ a csomagról, (lásd a /var/lib/dpkg/available fájlban).
dpkg -l | --list csomag_neve hasonló, mint az előbbi, csak kevesebb információt kapunk (ugyanazt a fájlt használja).
dpkg -L | --listfiles csomag_neve Kiirja a standard outputra a telepített csomag összes fájlját, abszolút útvonallal együtt.
dpkg -S | --search fájl nagyon hasznos kis kapcsoló, megadja hogy a fájl melyik csomagban található meg.
A dpkg-ban is van lehetőség a Linux rendszerekben megszokott -R (rekurzív) kapcsoló használatára. Ekkor természtesen érdemes nem konkrét "csomagfájlt" megadni, hanem valamilyen függőséget.
A dselect használata egy kicsivel könnyebb, mint a dpkg-é, de a dselect is dpkg-t indít, azonban nem kell pepecselni a különböző kapcsolókkal, hanem egy karakteres felületet kapunk, amivel bár jóval egyszerübb a dolgunk van, de a dselectet sem egyszerű kezelni. A dselect előnye az, hogy mindig látszik, hogy egy csomag milyen állapotban van. Ezt az állapotot a csomag előtt jelöli, de erről majd később. Másik előnye az, hogy a függőség kezelése egyszerubb, hisz egyből kijelölhetjük a meg- felelő "függőcsomagot", de könnyen előfordulhat hogy a "függőnek" is van "függője" stb. Ez egyszerubb, mint feltenni mindent (igy nincs gond a függőséggel), vagy a dpkg által visszaadott függőségekre vonatkozó hibaüzeneteket elemezni, így telepítés előtt egyben van minden.
Az első menüpontban kiválaszthatjuk a csomagok elérését. Ez lehet cdrom, ftp site, stb. Lehetőség van több útvonal megadására, ahol debian csomagok vannak így nagy választékból dolgozhatunk. A program segítségével is megadhatjuk az útvonalakat, de akár beírhatjuk a /etc/apt/sources.list fájlba is. ( A két megoldás egyenértékű ) Az update menüpontban frissithetjük az adatbázisunkat, ezt mindig tegyük meg, új útvonal megadása után. Ezután a Select-ben kiválaszthatjuk, mely csomagokat szeretnénk telepíteni. Először egy információs oldalt kapunk (help), melyről egy space leütésével léphetünk tovább. A csomagokat értelem és funkció szerint csoportokba osztva találjuk. A csomag állapota mellett szerepel az, hogy milyen kategóriába tartozik (pl. base, admin, devel stb.), majd jön a neve, verziója és egy rövid leírás róla. A képernyő alsó részében egy hosszabb leírást kapunk a csomagról. A listában a nyilakkal mozoghatunk, használhatjuk még a PageUp és Pagedown billentyűket is. Az állapotok:
*: azt jelenti, hogy telepítésre van kijelölve a csomag. Ezt az "i" illetve az Ins billentyűkkel tudjuk beállítani.
-: törlés állapota (Delete gomb)
_: megsemmisítés
Az Install menüre Enter-t ütve elindul a telepítésre kijelölt csomagok installálása. Ha van olyan csomag, ami függ egy másiktól, de az nincs kijelölve, akkor hibaüzenetet küld a program, de folytatja tovább a telepítéseket. Ha van olyan csomag, amit valamilyen oknál fogva nem tud vagy mi nem akarunk telepíteni, akkor azt később is megtehetjük, mert az állapotok el vannak mentve.
A nemkívánt csomagok eltávolításánal a törlésre jelölt csomagokat törli le. ( Ez nagy körültekintést igényel! ) Vegül lehetőségünk van a nemkonfigurált csomagok konfigurálására. A quit dselect menüpontra entert nyomva kiléphetünk a programból.