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

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
a (DPKG)
(DPKG)
59. sor: 59. sor:
   
 
Eltávolításkor a csomaghoz tartozó konfigurációs állományokat is törli.
 
Eltávolításkor a csomaghoz tartozó konfigurációs állományokat is törli.
  +
  +
'''Csomagokkal kapcsolatos lekérdezések'''
  +
  +
Viszonylag egyszerűen lekérdezhetjük a gépre telepített csomagok listáját:
  +
  +
dpkg -l
  +
  +
Ha ennél bonyolultabb lekérdezéseket akarunk végrehajtani, akkor szükségünk lesz a dpkg-query csomagra.
   
 
'''Egyéb hasznos funkciók'''
 
'''Egyéb hasznos funkciók'''

A lap 2012. november 27., 13:56-kori változata

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

Telepítést az -i kapcsoló segítségével hajthatunk végre:

dpkg -i <csomag1> <csomag2>

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]

Telepítés során különböző mennyiségű információt kérhetünk le. Az 1-es szint a default, ennél csak több információt kaphatunk.

--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.

Eltávolítás

Az eltávolítást az -r kapcsolóval kezdeményezhetjük:

dpkg -r <csomag1> <csomag2>

Kiegészítő kapcsolók

--purge

Eltávolításkor a csomaghoz tartozó konfigurációs állományokat is törli.

Csomagokkal kapcsolatos lekérdezések

Viszonylag egyszerűen lekérdezhetjük a gépre telepített csomagok listáját:

dpkg -l

Ha ennél bonyolultabb lekérdezéseket akarunk végrehajtani, akkor szükségünk lesz a dpkg-query csomagra.

Egyéb hasznos funkciók

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.

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.

4 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.

5 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.

6 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>…

7 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. Keresni 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>

8 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