Csomagkezelés alapjai: apt, yum, dnf, pkg

Készítette ForceIT - 2016.02.18.

Bevezetés

A legtöbb Unix-szerű operációs rendszer központosított mechanizmust kínál a szoftverek keresésére és telepítésére. A szoftvereket általában csomagokként szolgáltatják, ezeket a csomagokat pedig úgynevezett repository-ban (továbbiakban tároló) tárolják. A csomagokkal való munkát csomagkezelésnek hívjuk. A csomagok gondoskodnak az alap komponenseiről az operációs rendszernek, együtt véve az osztott könyvtárakkal (shared libraries), alkalmazásokkal, szolgáltatásokkal és dokumentációkkal.

A csomagkezelő rendszer többet nyújt, mint egy szoftver egyszeri telepítése, például lehetőséget nyújt a már feltelepített csomagok frissítésére is. A tárolók segítséget nyújtanak abban, hogy megbizonyosodj, az adott program kódját átvizsgálták a rendszeren való használathoz, és hogy a feltöltött szoftver jóváhagyásra került a fejlesztők és a csomag karbantartói által.

Amikor szervert vagy fejlesztői környezetet konfigurálunk, gyakran szükségünk lehet nem csak a hivatalos tárolók használatára. A csomagok a stabil kiadásban talán elavultak, különösen akkor, ha egy új, gyorsan változó szoftverről van szó. Mindazonáltal a csomagkezelő egy létfontosságú eszköz egy rendszergazda és fejlesztő számára.

Ennek a leírásnak a célja, hogy megismerd az alapvető funkciókat, mint a csomagok keresése, telepítése és frissítése különböző disztribúciókon.

Csomagkezelő rendszerek: Egy rövid áttekintés

A legtöbb csomagkezelő rendszer csomagok kollekciója köré épült. A csomagfájl általában egy archívum, ami tartalmaz lefordított binárisokat és más forrásokat, telepítő scripteket. A csomagok tartalmaznak még metaadatokat, beleértve a függőségek listáját, ami tartalmazza a telepítéshez szükséges egyéb csomagok nevét.

Bár a funkcionalitás nagyjából hasonló, a csomag formátuma és az eszköz változik platformonként:

Operációs rendszer Formátum Csomagkezelő
Debian .deb apt, apt-cache, apt-get, dpkg
Ubuntu .deb apt, apt-cache, apt-get, dpkg
CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Port-ok, .txz make, pkg

Debian-on és Debian alapú rendszereken, mint az Ubuntu, Linux Mint és Raspbian a csomagformátum a .deb. Az APT (Advanced Packaging Tool) biztosítja a parancsokat a leggyakrabban használt műveletekre, mint pl.: keresés a tárolóban, csomagok telepítése a hozzájuk tartozó függőségekkel együtt és a frissítések kezelése. Az APT parancsok úgy működnek, mint egy front-end az alacsonyabb szintű dpkg utility-hez ami kezeli a telepítését a különböző .deb fájloknak a helyi rendszeren.

A CentOS, Fedora és más tagja a Red Hat családnak RPM fájlokat használ. CentOS-on a yum használható az egyedi csomagfájlok és tárolók kezelésére.

A Fedora utóbbi verzióiban a yum-ot felváltotta a dnf, ami egy modernizált változata a yum-nak, de megtartotta a legtöbb felületet.

A FreeBSD bináris csomagrendszere a pkg paranccsal kezelhető. A FreeBSD kínál úgynevezett Port kollekciókat vagy másnéven Port fákat, ami nyújt egy helyi könyvtár struktúrát és eszközöket, amik lehetővé teszik a felhasználó számára, hogy fordítson és telepítsen csomagokat egyenesen forráskódból Makefile használatával. Általában sokkal kényelmesebb a pkg-t használni, de néha egy előre összeállított csomag nem érhető el, vagy esetleg meg kell változtatni fordítási beállításokat.

Csomagok listájának frissítése

Sok rendszer tart egy helyi adatbázist arról, hogy milyen csomagok érhetőek el a távoli tárolókban. A legjobb, ha minden csomag telepítés vagy frissítés előtt frissítjük ezt az adatbázist. Kivétel ez alól a yum és a dnf ami egy frissítést végez el mielőtt valamilyen műveletet végeznénk.

Operációs rendszer Parancs
Debian / Ubuntu sudo apt-get update
CentOS yum check-update
Fedora dnf check-update
FreeBSD Csomagok sudo pkg update
FreeBSD Portok sudo portsnap fetch update

Telepített csomagok frissítése

Ügyelnünk kell arra, hogy minden telepített szoftver a rendszeren frissítve legyen, ez csomagkezelő nélkül elég nehéz feladat lenne, meg kellene nézni több száz csomag változásnaplóját és biztonsági javításait.

FreeBSD-n a telepített port-okat sok esetben manuálisan kell beállítani, hogy frissíteni lehessen. A legjobb elolvasni a /usr/ports/UPDATING fájlt mielőtt frissítünk portmaster-el.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu sudo apt-get upgrade Csak a telepített csomagokat frissíti amennyiben lehetséges.
sudo apt-get dist-upgrade Frissít minden csomagot a legújabb verzióra és telepít vagy eltávolít függőségeket ha szükséges.
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Csomagok sudo pkg upgrade
FreeBSD Portok less /usr/ports/UPDATING Használd a less parancsot, hogy megnézd a frissítési leírást a portokhoz.
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a Feltelepíti a portmaster-t és frissíti a telepített portokat.

Csomag keresése

A legtöbb disztribúció kínál grafikus vagy menü vezérelt front-end-et a csomag kollekciókhoz. Ez lehet egy jó és könnyű módja, hogy böngésszünk a kategóriák között és új szoftvereket fedezzünk fel. Gyakran azonban a leghatékonyabb és leggyorsabb módszer, hogy megtaláljunk egy csomagot a parancssorban való keresés.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu apt-cache search keresési_szöveg
CentOS yum search keresési_szöveg
yum search all keresési_szöveg A csomag leírásában is keres.
Fedora dnf search keresési_szöveg
dnf search all keresési_szöveg A csomag leírásában is keres.
FreeBSD Csomagok pkg search keresési_szöveg Név alapján keres.
pkg search -f keresési_szöveg Név alapján keres és visszaadja a teljes csomag leírást.
pkg search -D keresési_szöveg A csomag leírásában keres.
FreeBSD Portok cd /usr/ports && make search name=csomagnév Név alapján keres.
cd /usr/ports && make search key=keresési_szöveg A csomag leírásában és függőségeiben keres.

Részletes információ megtekintése egy adott csomagról

Amikor eldől miket is szeretnénk telepíteni gyakran hasznos elolvasni előtte a részletes leírásait a csomagoknak. Ezek a leírások gyakran tartalmaznak metaadatokat mint a verziószám és/vagy a szükséges egyéb csomagok listáját.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu apt-cache show csomag Megmutatja a helyileg tárolt információt a csomagról.
dpkg -s csomag Megmutatja az aktuális telepítési állapotát a csomagnak.
CentOS yum info csomag
yum deplist csomag Megmutatja a csomag függőségi listáját.
Fedora dnf info csomag
dnf repoquery --requires csomag Megmutatja a csomag függőségi listáját.
FreeBSD Csomagok pkg info csomag Információt ad a telepített csomagról.
FreeBSD Portok cd /usr/ports/kategória/port_név && cat pkg-descr/code>

Csomag telepítése tárolóból

Ha már tudjuk a nevét a csomagnak, akkor általában már egy paranccsal tudjuk telepíteni a csomagot és a függőségeit. Általánosságban elmondható, hogy ha több csomagot akarunk telepíteni elég felírni egymás után a nevüket.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu sudo apt-get install csomag
sudo apt-get install csomag1 csomag2 ... Feltelepíti a felsorolt csomagokat.
sudo apt-get install -y csomag Automatikus "igen" parancs telepítésnél.
CentOS sudo yum install csomag
yum deplist csomag Megmutatja a csomag függőségi listáját.
Fedora dnf info csomag
dnf repoquery --requires csomag Megmutatja a csomag függőségi listáját.
FreeBSD Csomagok pkg info csomag Információt ad a telepített csomagról.
FreeBSD Portok cd /usr/ports/kategória/port_név && cat pkg-descr Felépíti és telepít Port-ot forráskódból.

Csomag telepítése helyi fájlrendszerről

Néha, még ha a csomag nem is hivatalosan van kiadva az adott operációs rendszerre, a fejlesztő vagy eladó kínál telepítési csomagot letöltésre. Ezeket le tudod tölteni a böngésződdel vagy akár parancssorból is.

Debian alapú rendszereken, a dpkg kezeli a csomagfájlokat. Ha egy csomagnak függőségei vannak, akkor a gdebi segítségével le tudod tölteni őket a hivatalos tárolókból.

CentOS, Fedora rendszeren a yum és a dnf használható a fájlok telepítésére és ezek a programok kezelik a függőségeket is.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu sudo dpkg -i csomag.deb
sudo apt-get install -y gdebi && sudo gdebi csomag.deb Feltelepíti és hasznlája a gdebi-t a szükséges, hiányzó függőségek telepítésére.
CentOS sudo yum install csomag.rpm
Fedora sudo dnf install csomag.rpm
FreeBSD Csomagok sudo pkg add csomag.txz
sudo pkg add -f csomag.txz Akkor is feltelepíti a csomagot, ha az már fel van telepítve.

Egy vagy több feltelepített csomag törlése

Mivel a csomagkezelő tudja, milyen fájlokat biztosít az adott csomag, ezért általában eltávolítja őket, ha a szoftver többé nem szükséges.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu sudo apt-get remove csomag
sudo apt-get autoremove Letörli a nem szükséges csomagokat.
CentOS sudo yum remove csomag
Fedora sudo dnf erase csomag
FreeBSD Csomagok sudo pkg delete csomag
sudo pkg autoremove Letörli a nem szükséges csomagokat.
FreeBSD Portok sudo pkg delete csomag
cd /usr/ports/eleresi_ut_a_porthoz && make deinstall Letörli a feltelepített portot.

Segítség keresése

Mivel a csomagkezelő tudja, milyen fájlokat biztosít az adott csomag, ezért általában eltávolítja őket, ha a szoftver többé nem szükséges.

Operációs rendszer Parancs Megjegyzés
Debian / Ubuntu sudo apt-get remove csomag
sudo apt-get autoremove Letörli a nem szükséges csomagokat.
CentOS sudo yum remove csomag
Fedora sudo dnf erase csomag
FreeBSD Csomagok sudo pkg delete csomag
sudo pkg autoremove Letörli a nem szükséges csomagokat.
FreeBSD Portok sudo pkg delete csomag
cd /usr/ports/eleresi_ut_a_porthoz && make deinstall Letörli a feltelepített portot.