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. december 16., 14:15-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

A Linux disztribúciók mindegyike rendelkezik valamilyen csomagkezelővel, ezek közül a legelterjedtebbek a dpkg és rpm, valamint az ezeket használó apt és yum. Az alábbiakban ezeket mutatom be, és hasonlítom össze egy-egy táblázat segítségével, hogy az egyikben megtalálható "fícsör"-t hogyan lehet megvalósítani a másikkal.


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:

Összfoglaló táblázat
Leírás Debian RedHat
Csomagok telepítése dpkg -i <csomag> rpm -i <csomag>
Csomagok eltávolítása dpkg -r <csomag> rpm -e <csomag>
Telepített programok listázása, melyek tartalmazzák a string-et. dpkg -l '*string*' rpm -qa '*string*'
Csomag verziószáma dpkg -l <csomag> rpm -q <csomag>
Csomag metaadatok dpkg -s <csomag> rpm -q -i <csomag>
Csomag minden fájlának metaadata dpkg -I <csomag> rpm -q -i -p <csomag>
Adott fájl melyik csomaghoz tartozik dpkg -S /path/file rpm -q -f /path/file
Hová lettek telepítve a fájlok dpkg -L <csomag> rpm -q -l <csomag>
Hová lennének telepítve a fájlok dpkg -c <csomag> rpm -q -l -p <csomag>
Kicsomagolás a jelenlegi könyvtárba dpkg -x <csomag> cpio -id

2 DPKG

2.1 Telepítés

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

dpkg -i <csomag1> <csomag2>

Telepíthetjük a csomagokat lépésről-lépésre is, ugyanis a fenti parancs telepíti ÉS beállítja a csomagot. A lépések a következők:

dpkg --unpack <csomag1> <csomag2> 

telepíti a csomagot, de nem állítja be, unpacked állapotba kerül.

dpkg --configure  <csomag1> <csomag2> 

beállítja a megfelelő csomagot, ha az legalább unpacked állapotú.

dpkg --configure --pending 

minden beállítatlan csomagot konfigurál.

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.

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

2.3 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. A fentihez hasonló módon ezzel is lehetséges a telepített csomagok lekérdezése:

dpkg-query -l

Használhatjuk úgy is, hogy csomagneveket adunk meg utána, ekkor részletes adatokat kapunk a megadott csomagokról:

dpkg-query -l <csomag1> <csomag2>

Ha még részletesebb adatokra vágyunk, használjuk a -p kapcsolót:

dpkg-query -p <csomag>

Ha csak az adott csomag verziószámára vagyunk kíváncsiak, kiadhatjuk a kvetkező parancsot:

dpkg-query --show <csomag1> <csomag2>

A csomaghoz tartozó összes fájl és elérési útjuk listázása:

dpkg-query --listfiles

A --search kapcsolóval csomagok fájljai között keresgélhetünk:

dpkg-query --search <kulcsszó>


2.4 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:

Override-ok listázása:

dpkg-override --list

Új override hozzáadása

dpkg-override --add <tulajdonos> <csoport> <mód> <fájl>

Override törlése:

dpkg-override --remove <fájl>

2.5 dpkg-divert

A dpkg-divert segítségével fájl diverziókat(eltéréseket) hozhatunk létre, azaz a dpkg nem az eredeti helyére fogja telepíteni az egyes fájlokat, hanem egy attól eltérő helyre. Ha két telepítés ütközik, azaz a telepítendő fájlok egy részhalmaza ugyanarra a helyre esik ugyanazzal a névvel, akkor így "kijátszhatjuk" a csomagkezelőt, és használhatóvá válik mindkét program.

Irányítsuk hát át az összes olyan telepítést, mely /usr/bin/example-be szól:

dpkg-divert --divert /usr/bin/example.foo --rename /usr/bin/example

Innentől kezdve aki oda akar telepíteni, a csomagjai a /usr/bin/example.foo elérési út alatt lesznek megtalálhatóak, így az eredeti helyen levő fájljaink teljes biztonságban vannak. Az eredeti rend visszaállításához az alábbi parancsot gépeljük be:

dpkg-divert --rename --remove /usr/bin/example


Egy másik példa:

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

2.6 dpkg-repack

Egy már feltelepített programból képes visszafejteni a binárist .deb fájllá. A jelenlegi disztribúciókban általában külön kell telepíteni. Használata igen egyszerűnek mondható:

dpkg-repack programnév

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.

2.7 debconf

Rendszerszintű konfigurációs feladatokat képes elvégezni. Tulajdonképpen egy backend adatbázisból (van ldap backend is), valamint egy ennek beállítására szolgáló frontend-ből áll. Ha egy csomag települ, a debconf kérdéseket tesz fel a felhasználónak, melyek meghatározzák a rendszerszintű konfigurációs fájlok tartalmát. Ha szükséges, ezek után a felhasználó visszamehet, és megváltoztathatja a csomag konfigurációját a dpkg-reconfigure segítségével:

dpkg-reconfigure debconf

Különböző frontendjei vannak, a readline a konzolos verzió. Van még egy egyszerű grafikus interfész (dialog), valamint gnome, és kde is.

Viselkedését rendszergazdai módban állíthatjuk be. Alapértelmezés szerint a debconf nem teszi fel újból a kérdéseket frissítés esetén, hanem a régi válaszokat használja továbbra is. Ezt változtathatjuk meg az "Ask again" segítségével. Ráadásul az egyes kérdésekhez prioritási szinteket is rendelhetünk, így előírhatjuk, hogy csak bizonyos prioritási szint felett tegye fel a rendszer újból a kérdéseit; a prioritás alattiakra a válasz a régi válasz lesz, a prioritás felettiek pedig default-ként a régi válaszok lesznek beállítva, de természetesen ezek megváltoztathatóak.

2.8 A csomagok állapotai

Egy dpkg csomagnak megannyi állapota lehet, melyek főként a telepítés állapotától függnek:

- fel van telepítve és be van konfigurálva: installed

- a telepítés elkezdődött, de megszakadt, vagy sikertelen volt: half-installed

- nincs telepítve: not-installed

- telepített, de nincs beállítva: unpacked

- telepített, de nem sikerült teljesen beállítani: half-configured

- csak a konfigurációs fájljai vannak meg: config-files

Egy kiválasztott csomagnak három állapota lehet:

- kiválasztva telepítésre: install

- kiválasztva törlésre: deinstall

- teljes törlés: purge

Ezen felül még két állapota lehet egy csomagnak:

- a csomagkezelő nem változtat az állapotán: hold

- újra kell telepíteni a csomagot, mert az megsérült: reinst-required

2.9 Csomagközi viszonyok

Az egyes csomagok kontroll-fájlokat deklarálhatnak maguknak, melyek tartalmazzák egyéb csomagokhoz fűződő gyengéd kapcsolatukat - főként azt, hogy milyen egyéb csomagoktól függenek, esetleg hogy nem telepíthetőek más csomaggal együtt. Ezek befolyásolására hét mező van definiálva: Depends, Pre-Depends, Recommends, Suggests, Enhances, Breaks és Conflicts.

Depends

Ebbe a mezőbe azon programok kerülnek, melyek számos egyéb funkcionalitással ruházzák fel a programot. Fontos megjegyezni, hogy csak a csomag konfigurálása nem mehet ezen csomagok nélkül, tehát a csomag már unpacked üzemmódban már a rendszerben lehet a függőségek telepítése nélkül.

Recommends

Hasonlít a depends-hez, de nem olyan erős, a konfiguráció létrejöhet az itt felsorolt csomagok nélkül, természetesen ezen csomagok telepítése is extra funkcionalitást (esetleg kevesebb bugot) adhat a rendszerhez.

Suggests

Ahogy neve is sugallja, az itt felsorolt csomagok kibővíthetik a telepítendő csomag eszköztárát, de ezek nélkül is teljes értékű programot kapunk.

Enhances

Tulajdonképpen nagyon hasonlít a suggest-hez, de fordított irányban: azon csomagok vannak ide felsorolva, melyek funkcionalitását bővíti a telepítendő csomag.

Pre-depends

Az itt felsorolt csomagoknak nem elég konfiguráció előtt a gépen lenniük. Arra kényszeríti a dpkg-t, hogy az adott csomag telepítése előtt már ezek a csomagok fel legyenek telepítve. Használata csak indokolt esetben javasolt, például ha a rendszerre veszélyt jelentene sima depends-ként felsorolni a csomagokat. Ha valaki csomagot készít, és szerinte indokolt pre-depends-t használni, annak meg kell ezt beszélnie a debian-devel levelező listán.

Breaks

Az itt felsorolt csomagokkal baj lesz, ha fel szeretnénk telepíteni a csomagunkat: a dpkg ugyanis nem fogja engedélyezni a telepítést egészen addig, míg ezeket a csomagokat legalább Half-configured állapotba nem hozzuk telepítettből.

Replaces

Két dologra is használható: egyrészt egy csomag egy fájlját lehet vele lecserélni, illetve teljes csomagot is lecserélhet. Ha változtatás történik egy másik csomag fájljában, akkor annak tulajdonosi jogai átkerülnek a csomaghoz, mely megváltoztatta. Ha teljes csomagokat szeretne felülírni, akkor tulajdonképpen azokat először eltávolítja, és utána kezdődik a telepítés. Eltávolítás helyett viszont virtuális csomagnak is kijelölhetjük.

Provides

Tegyük fel, hogy van egy továbbfejlesztett csomagunk, más néven, mint az eredeti, legyen ennek a neve super-bar, és legyen egy foo csomag, ami függ az eredeti bar-tól pl.:

Package: foo
Depends: bar

Package: super-bar
Provides: bar

Ez azt jelenti, hogy a super-bar csomag nyújtja a bar szolgáltatásit is, mely így kielégíti a foo csomag függőségét.

3 RPM

3.1 Telepítés

A telepítés az -i kapcsoló segítségével történik:

rpm -i <csomag1> <csomag2>

Telepíthetjük a csomagokat lépésről-lépésre is, ugyanis a fenti parancs telepíti ÉS beállítja a csomagot. A lépések a következők:

rpmbuild -bp <csomag>

telepíti a csomagot, unpacked állapotba kerül.

rpmbuild -bc <csomag>

a csomag builded állapotba kerül.

rpmbuild -bi <csomag>

a csomag installed állapotba kerül.

rpmbuild -bb <csomag>

a bináris elkészítése.

Kiegészítő kapcsolók

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

-v: több csomag telepítése esetén kiírja, hogy éppen mi települ (nem az -i mellett, hanem helyette használatos).

-h: progress bar-t is kapunk.

--test: ellenőrzi, telepíthető-e a csomag.

--nodeps: nem ellenőri a függőségeket, csak akkor használjuk, ha tudjuk mit csinálunk.

3.2 Eltávolítás

Az -e kapcsoló segítségével adhatjuk tudtára a csomagkezelőnek, hogy egy csomag elérte számunkra a nemkívánatos státuszt:

rpm -e <csomag1> <csomag2>

3.3 Frissítés

Frissíteni így tudunk:

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.

3.4 Csomagokkal kapcsolatos lekérdezések

A gépre telepített csomagok lekérdezése a -qa kapcsolóval történhet:

rpm -qa

A csomaghoz tartozó összes fájl listázása:

rpm -ql <csomag>

Amennyiben egy csomag verziószámára vagyunk kíváncsiak:

rpm -q <csomag>

Ha ennél jóval több információra van szükségünk a csomagról:

rpm -qi <csomag>

3.5 rpmrebuild

Visszafejt egy feltelepített csomagot egy telepíthető, rpm csomaggá. Hasznos lehet, ha például van egy csomag, amin telepítés után változtatásokat végzünk, és ezekkel a változtatásokkal szeretnénk a későbbiekben is használni - ekkor nyomunk rá egy rpmrebuild-et, és készen is vagyunk. Ezt a legegyszerűbben így tehetjük meg:

rpmrebuild <csomag>

Viszonylag sok kapcsolója van, testreszabható rajta szinte minden. Az alábbi linken bővebben: http://linux.die.net/man/1/rpmrebuild

3.6 A csomagok állapotai

Egy rpm csomagnak több állapota lehet, attól függően, hogy a telepítés mely állapotában van éppen:

- nincs telepítve: not-installed

- forrás csomag kicsomagolva: unpacked

- a csomag le van fordítva: builded

- ki van csomagolva, fordítva és fel van telepítve: installed

3.7 Csomagközi viszonyok

Az egyes csomagok spec-fájlokat deklarálhatnak maguknak, melyek tartalmazzák függőségeiket más csomagokhoz - főként azt, hogy milyen egyéb csomagoktól függenek, esetleg hogy nem telepíthetőek más csomaggal együtt. Ezek befolyásolására négy tag van definiálva: Requires, Pre-Req, Provides, és Conflicts.

Requires

Ebbe a mezőbe azon csomagok kerülnek, melyek számos egyéb funkcionalitással ruházzák fel a programot, ezek nélkül a program futása értelmetlen, vagy nem is lehetséges, ezért "kötelező" őket telepíteni. Itt verziószámokat is megkövetelhetünk, például függjünk a foo csomag 2.7-es, vagy annál nagyobb verziójától:

Requires: bar >= 2.7

Pre-Req

A Debian féle Pre-Depends-hez hasonlít, tehát az itt felsorolt csomagoknak mindenképp fel kell hogy legyenek telepítve, mielőtt nekiállunk a csomag telepítésének. Viszont ez "deprecated" állapotban van, az rpm.org szerint a requires-t használva ehelyett helyes telepítést kapunk.

Conflicts

Ebben a szekcióban felsorolt csomagok, ha jelen vannak a rendszerben, rendkívül gonosz módon nem engedik az adott csomag telepítését, telepítésnél ördögűzést a --nodeps kapcsolóval végezhetünk, de csak ha biztosak vagyunk a dolgunkban.

Provides

Ide olyan csomagok vannak beírva, melyek szolgáltatásit ez a csomag is el tudja látni. Virtuális csomagnak is nevezik ezeket, hiszen ezek valójában nem lesznek a rendszeren, csupán a szolgáltatásait nyújtja egy másik 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 .

5.1 Telepítés

Egyszerűen megadjuk a kívánt programok neveit az apt-get install parancs után:

apt-get install <csomag1> <csomag2>….


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

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

5.4 update-alternatives

A csomagtelepítő szolgáltatások menedzselik a symlinkek beállítását, melyek különböző verziókra mutatnak. Az update-alternatives segítségével saját symlinkeket hozhatunk létre, így akár több verzió is békében megélhet egymás mellett. Vegyük például, hogy feltelepítettük a legújabb firefoxot, azonban szokás szerint teli van hibákkal, ezért átmenetileg szeretnénk használni a régebbi verziót:

update-alternatives --install /usr/bin/firefox firefox /usr/bin/firefox-15.0 70
update-alternatives --install /usr/bin/firefox firefox /usr/bin/firefox-3.5 90

Így ha a konzolba begépelem a "firefox" parancsot, akkor a 3.5-ös verzió fog elindulni, mivel magasabb prioritást adtam meg a számára (az utolsó megadott számjegy a prioritás). Ha szeretnénk ellenőrizni, hogy jelenleg melyik aktív:

update-alternatives --display firefox

5.5 update-mime

Frissíti a /etc/mailcap fájlt, hogy jelezze a változtatások, melyet a csomagkezelő rendszer végzett telepítés, illetve eltávolítás során. A bejegyzések sorrendjét a /etc/mailcap fájlban a /etc/mailcap.order szerkesztésével lehetséges.

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

Az apt-cache policy a preferences fájllal kapcsolatos debug problémákban hivatott segíteni. Argumentumok megadása nélkül az egyes források prioritását írja ki. Egyébként a megnevezett csomag prioritásáról és ehhez kapcsolódó információkról ad részletes adatokat. Például apt-pinning esetén igen hasznos lehet.

apt-cache policy <csomag>

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

5.8 apt-pinning

Elsősorban a Stable, Testing, Unstable forrásokat lehet segítségével vegyíteni a megfelelő arányban. Az olyan eszközök, programok, melyek nem kritikusak a rendszer szempontjából, nem annyira fontos, hogy stable verzió fusson belőle, és esetleg megengedhető, hogy a felmerülő hibák rovására egy olyan verziót futtassunk, mely az összes általunk kívánt fícsört szolgáltatja.

Az /etc/apt/sources.list tartalmazza a depók listáját, ezt módosítsuk úgy, hogy az általunk szükségesnek ítélt depók megjelenjenek benne.

Módosítsuk az /etc/apt/preferences fájlt! A pinning itt történik, általában a legmagasabb verziójú csomag az érvényes, azonban itt felülbírálhatjuk a dolgokat. Így nézhet ki egy egyszerű preferences:

Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Package: *
Pin: release a=unstable
Pin-Priority: 600

A nagyobb prioritású van érvényben, tehát a stable.

Ezután adjuk ki az apt-get update parancsot! Jó eséllyel az alábbi hibát fogjuk tapasztalni:

E: Dynamic MMap ran out of room
E: Error occured while processing sqlrelay-sqlite (NewPackage)
E: Problem with MergeList /var/lib/apt/lists/ftp.us.debian.org_debian_dists_woody_contrib_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Laikus windows felhasználó erre megnézné, hogy működik-e a DVD meghajtó, mi ne tegyük, hanem inkább nyissuk meg az /etc/apt/apt.conf fájlt, és adjuk hozzá az alábbi sort:

APT::Cache-Limit "8388608";

A probléma az volt, hogy nem fért be az apt cache-ébe a sok csomag, így viszont szépen megnöveltük a cache-t, így a hiba jó eséllyel eltűnik.

Ezek után már csak telepítenünk kell:

apt-get -t unstable install <csomag>

Készen vagyunk.

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

6.1 Telepítés

Az install kulcsszó használatával:

yum install <csomag1> <csomag2>

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

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

6.4 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 <kulcsszó>

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>

6.5 yum provides/whatprovides

Ez a yum csomag része, nem igényli külön csomagok telepítését. Segítségével a csomagban található fájlok és az általa nyújtott szolgáltatások között is kereshetünk, természetesen a csomagnak nem kell ahhoz a gépre telepítve lennie, hogy keresni tudjunk benne.

Keresni így tudunk:

yum provides <string>

Azonban ha a csomagban levő minden fájlt szeretnénk kilistázni, akkor már a repoquery parancsra van szükségünk:

repoquery --list <csomag>

6.6 yum-plugin

A yum plugin architektúrája lehetővé teszi, hogy olyan implemetációkat készítsünk, amilyeneket szeretnénk (és persze az is meghatározza, hogy az rpm és yum felépítése mennyire engedi), így ha elég kitartóak vagyunk, saját magunk is implementálhatunk olyan funkciókat, melyek segítségével apt-szerűvé tehetjük rendszerünket. Tegyük fel, hogy ilyet nem szeretnénk csinálni, inkább csak használjuk fel, ami már megvan:

yum-plugin-protectbase

Az egyes repókról letöltött csomagokat védi: csak az adott repóról lesz hajlandó frissített verziót elfogadni a rendszer.

yum-plugin-versionlock

Csomag-verziószám összerendeléseket lehet vele megadni, így meg lehet akadályozni, hogy újabb verzióra frissítsen a hátunk mögött a rendszer.

yum-plugin-protect-packages

Erre a legjobb példa maga a yum: ezzel akadályozza meg ugyanis a yum, hogy el legyen távolítva a yum. Azaz csomagokat lehet megvédeni vele a káros "behatások"-tól, törlésektől.

6.7 debconf

Fel lehet telepíteni rpm alapú csomagkezelőre is:

yum install debconf

Leírást készítettem róla a dpkg-s részben, nem ismétlem meg újra.

7 apt-yum legfontosabb funkcióinak összefoglaló táblázata

Összfoglaló táblázat
Leírás Debian RedHat
Letölthető csomagok adatbázisának frissítése apt-get update yum használatakor mindig frissít
Telepítés repóból apt-get install <csomag> yum install <csomag>
Csomag törlése apt-get remove <csomag> yum remove <csomag>
Csomagok frissíthetőek-e apt-get -s upgrade, apt-get -s dist-upgrade yum check-update
Csomagok frissítése apt-get upgrade yum update
Teljes system-upgrade apt-get dist-upgrade yum upgrade
Telepített csomagok listázása dpkg --list yum list installed
Infó adott csomagról apt-cache showpkg <csomag> yum info <csomag>
Ez a csomag miktől függ apt-cache depends rpm -qR <csomag>
Milyen csomagok függenek ettől a csomagtól apt-cache rdepends rpm -q -whatrequires [args]
Információk elérhető csomagról apt-cache search <csomag> yum search <csomag>
Csomagban levő fájlok listázása apt-file list <csomag> repoquery --list <csomag>
Személyes eszközök