Az apt és yum csomagkezelők összehasonlítása

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Surman (vitalap | szerkesztései) 2012. november 22., 23:43-kor történt szerkesztése után volt.

apt-get install: a parancs, mely használatának élményét előbb-utóbb szinte minden Linux felhasználó megtapasztal és általában elég is a mindennapokban, hisz az átlagember ritkán akar a programokkal mást csinálni, mint telepíteni (meg persze futtatni, de az nem ide tartozik). Viszont a csomagkezelés ennél jóval több, sőt, az apt-get már egy jóval későbbi, az életet könnyebbé tevő „fícsör”.


Tartalomjegyzék

1 dpkg és rpm

A Debian alapú operációs rendszerek csomagkezelésének alapja a dpkg nevű program, míg a Red Hat által kifejlesztett rpm-et egyéb disztribúciók használják, pl. a Fedora, vagy CentOS, illetve meglepő módon, a Red Hat is. Ezek a programok alacsonyszintű csomagkezelést valósítanak meg, melyek szolgáltatásokat nyújtanak a magasabb szintű csomagkezelők számára (dpkg: apt, rpm: yum), melyeket egyszerűbb szintaxisuk miatt nagyobb előszeretettel használunk mi is. Nézzük is, mire használhatjuk ezeket a programokat:

egyszerűbb parancsok összefoglaló táblázata
dpkg rpm
Telepítés dpkg -i rpm -i
Eltávolítás dpkg -r rpm -e
Telepített programok listázása dpkg-query --l rpm -qa
Csomag részletes adatai dpkg-query --p rpm -qi
Csomaghoz tartozó összes file kilistázása dpkg-query --listfiles rpm -ql

2 DPKG

Telepítés

Kiegészítő kapcsolók --force-all: ha a telepítés folyamán valamilyen hiba lép fel, kikényszeríthetjük, hogy a telepítés folytatódjon, ugyanakkor használat ellen-javalt, mivel a dpkg nem hiába áll le a telepítéssel. Csak akkor használjuk, ha teljesen biztosak vagyunk a dolgunkban! --debug=[debug szintje] --refuse-downgrade: ugyan a dpkg figyelmeztet a downgrade-re, de nem kérdezi meg, ennek ellenére szeretnénk-e folytatni a telepítést, csupán a figyelmeztető üzenetet kapjuk meg. Ha az ennek következtében kialakuló fejfájást meg szeretnénk előzni, akkor használjuk ezt a kapcsolót, mely leállítja a telepítést downgrade esetén --purge: eltávolításkor a csomaghoz tartozó konfigurációs állományokat is törli.

3 RPM

Telepítés --force: ha a telepítés folyamán valamilyen hiba lép fel, kikényszeríthetjük, hogy a telepítés folytatódjon, ugyanakkor használat ellen-javalt, mivel az rpm nem hiába áll le a telepítéssel. Csak akkor használjuk, ha teljesen biztosak vagyunk a dolgunkban! -iv: több csomag telepítése esetén kiírja, hogy éppen mi települ (nem az -i mellett, hanem helyette használatos). -ivh: progress bar-t is kapunk --test: ellenőrzi, telepíthető-e a csomag. frissítés: rpm -F upgrade: rpm -U Frissítés esetén csak akkor kerül fel a csomag, ha annak egy verziója már szerepel a rendszeren. dpkg-statoverride Megmondja a dpkg számára, hogy más legyen a tulajdonosa egy adott fájlnak (vagy mappának, eszköznek, illetve bárminek, amit a dpkg kezelni képes). Jól használható olyan esetekben, amikor egy olyan programot szeretnénk telepíteni, melynek setuid flag-re van szüksége, vagy egy bizonyos csoport jogaihoz kötött a telepítése. Ezen felülbírálatok listáját menedzselhetjük a statoverride segítségével. Használata: dpkg-override --list: override-ok listázása. dpkg-override --add <tulajdonos> <csoport> <mód> <fájl>: új override hozzáadása dpkg-override --remove <fájl>: override törlése dpkg-divert Sokszor előfordulhat, hogy egy programot mindig egy adott kapcsolótengerrel szeretnénk indítani, amit begépelni nagyon fárasztó lehet. Erre a problémára ad megoldást a dpkg-divert. Adjuk ki az alábbi parancsot: dpkg-divert --add --rename --divert /usr/bin/gcc.real /usr/bin/gcc Mit is csináltunk most? Létrehoztunk egy új eltérést (diversion) a rendszerben, mely tulajdonképpen átnevezte a gcc programunkat gcc.real-re. De mire lesz ez jó? Hát arra, hogy a /usr/bin-ben létrehozunk egy szkript fájlt gcc néven, és itt „meghívjuk”a gcc.real-t az általunk fontosnak vélt kapcsolókkal. Ekkor ha begépeljük a gcc-t, már az általunk írt szkriptfájl fog lefutni. Probléma már csak akkor adódhatna, ha frissítenénk a rendszert, és a gcc is frissítés „áldozatává” válna, azonban ezzel egyben a rendszer tudtára adtuk, hogy ekkor a gcc.real-t frissítse. Ha el szeretnénk távolítani egy ilyen diversion-t, akkor, a gcc-s példát folytatva, az alábbi procedúrával tehetjük meg: a) töröljük a szkriptünket: rm /usr/bin/gcc b) eltávolítjuk magát a diversion-t dpkg-divert --rename --remove /usr/bin/gcc Ekkor visszaáll minden az eredeti formájába. A rendszerben levő diversion-öket így listázhatjuk: dpkg-divert --rename --remove /usr/bin/gcc dpkg-repack A jelenlegi disztribúciókban általában külön kell telepíteni. Egy telepített programot tudunk a segítségével visszaalakítani bináris .deb fájllá. Használata igen egyszerűnek mondható: dpkg-repack myprogram Ekkor a program létrehozza binárist, és már készen is vagyunk. Nem sok kapcsolója van, egyet említenék meg, mely sok esetben hasznos lehet: --arch=<architektúra>: a dpkg repack nem tudja visszafejteni, eredetileg milyen architektúrára készült a csomag, a kapcsoló segítségével viszont megadhatjuk neki (ha emlékszünk). Ha más volt az eredeti architektúra, akkor nem feltétlenül, de lehet hogy hibás lesz a csomag. apt és yum Habár a dpkg és rpm csomagkezelőkkel mindent meg lehet oldani, azonban ezek használata sokszor igen kényelmetlen: saját magunknak kell az egyes csomagokat felkeresni, valamint a függőségek kezelése sem az igazi. APT (Advaced Packaging Tool) Egy adatbázisban tárolja, hogy hol lehet fellelni az egyes csomagokat. Ha a csomagok telepítéséhez további csomagokra van szüksége, akkor azokat is felkeresi, és feltelepíti. Az apt számára azt is meg kell mondanunk, hogy hol találhat ilyen csomagokat, a beállítandó fájl: /etc/apt/sources.list . Telepítés Egyszerűen megadjuk a kívánt programok neveit az apt-get install parancs után: apt-get install <csomag1> <csomag2>….

Eltávolítás

Hasonló a telepítéshez, azonball install helyett remove-t adunk meg: apt-get remove <csomag1> <csomag2>… Ha a csomaghoz tartozó minden konfigurációs fájlt és beállítást is törölni szeretnénk, akkor a „purge” segítségével kell törölnünk. apt-get purge <csomag1> <csomag2>… És még egy hasznos parancs: apt-get autoremove Ezzel azon csomagokat törölhetjük, melyek csupán a függőségek kielégítése miatt lettek telepítve, de már nincs rájuk szükség.

Frissítés

Először is frissíteni kell a helyi index fájlokat: apt-get update Ezután jöhet a csomagok frissítése apt-get upgrade Ha nem csak az általunk telepített programokat szeretnénk frissíteni, hanem a telepített függőségeket is, akkor inkább ezt használjuk: apt-get dist-upgrade Egyéb hasznos funkciók apt-get check Végignézi a telepített csomagokat, csomagütközéseket, hiányzó függőségeket keres. apt-get install -f Az előbbi parancs által felfedezett hibákat javítja ki. apt-get (auto)clean A clean a telepítéshez használt csomagokat törli le, az autoclean ennek egy olyan részhalmazát törli, mely csomagokat már nem lehet letölteni, így azokra valószínűleg szükség sem lesz.

4 apt-cache

Csomaginformációk lekérdezésére használatos. Ez annyival nyújt többet a dpkg-nál, hogy nem csak a telepített csomagok között kereshetünk, hanem minden olyan csomag között, melyek szerepelnek a csomagadatbázisban. Írjuk is le az első apt-cache parancsunkat: apt-cache search <string> Ekkor az apt-cache elkezd keresgélni a csomagok nevei és leírásai között. Ha talál valamit, kiírja a csomag nevét egy egysoros magyarázattal, hogy mi az. Lekérdezhetünk teljes csomagleírásokat is, ehhez a showpkg kulcsszót használjuk: apt-cache showpkg <csomag1> <csomag2>… Így információt kaphatunk függőségekről, verziószámról, MD5 összegről, stb. Ha csak a függőségekre vagyunk kíváncsiak, azt kicsit szebb formátumban is kérhetjük: apt-cache depends <csomag1> <csomag2>… A fordított függőségeket pedig az alábbi paranccsal kérdezhetjük le: apt-cache rdepends <csomag1> <csomag2>… apt-file Nem az apt csomag része, külön telepítést igényel. Segítségével a csomagban található fájlok között is kereshetünk. Hasonlít a „dpkg-query”-hez, azonban a nem telepített csomagok listájában is képes keresni. Használatánál figyeljünk arra, hogy mivel nem az apt csomag része, ezért adatbázisát külön kell frissíteni az apt-file update paranccsal. Keeresni a search kulcsszó segítségével tudunk: apt-file search <string> A „dpkg-query --listfiles”-hoz hasonlóan kilistázhatjuk a csomagban található összes fájlt - természetesen, az apt-tól megszokott kényelmi szolgáltatással, hogy nem telepített csomagot is listázhatunk: apt-file list <csomagnév>

5 YUM (Yellowdog Updater Modifier)

Az rpm csomagok felkutatása fáradságos, és emiatt fejlesztette ki a Red Hat a yum-ot: ez egy magasabb szintű csomagkezelő program, tulajdonképpen tökéletes párhuzam húzható közte, és az apt között. Egyszerűen a „yum” parancs után megadjuk a csomag nevét, és a megfelelő csomagot a yum letölti a megfelelő adatbázisból. Az rpm csomagok helyei a /etc/yum.conf, illetve a /etc/yum.repos.d könyvtárban találhatóak.

Telepítés

Az install kulcsszó használatával: yum install <csomag1> <csomag2> Eltávolítás A remove kulcsszó használatával jelölhetjük ki a törölni kívánt csomagokat. yum remove <csomag1> <csomag2>

Frissítés

A check-update paranccsal történik: yum check-update Ha nincs frissíthető csomag, akkor 0-val tér vissza, egyébként 100-zal. A csomagokat az update paranccsal frissíthetjük: yum update Viszont megadhatunk utána csomagneveket is, ekkor csak a kijelölt csomagokat fogja frissíteni. yum update <csomag1> <csomag2> Csomaginformációk Részletes információkat az „info” kulcsszó segítségével kérhetünk: yum info <csomag1> <csomag2> A rendszeren fent levő, vagy arra telepíthető csomagok listáját a „list all” paranccsal kérdezhetjük le: yum list all Keresni a search funkcióval tudunk: yum search <string> A keresett string-et a csomagok nevében keresi. Csomagban levő fájlok listázására a repoquery programot használhatjuk (yum-utils csomag): repoquery --list <csomagnév> apt-yum legfontosabb funkcióinak összefoglaló táblázata: apt yum Telepítés apt-get install yum install Eltávolítás apt-get remove yum remove Frissítés apt-get upgrade yum update Részletes csomaginformáció apt-cache showpkg yum info Csomagban levő fájlok listázása apt-file list repoquery --list

Személyes eszközök