7. fejezet - Szoftverkezelés parancssori eszközökkel

Tartalomjegyzék

7.1. A zypper használata
7.2. RPM – a csomagkezelő

Kivonat

Ez a fejezet a Zyppert és az RPM-et írja le, a szoftverek kezelésére szolgáló két parancssori eszközt. Ebben a szövegkörnyezetben használt terminológia (mint például telepítési forrás, javítás, vagy frissítés) a következő helyen található: 3.1. - Fogalmak.

7.1. A zypper használata

A zypper egy parancssori csomagkezelő a csomagok telepítésére, frissítésére és eltávolítására, valamint a telepítési források kezelésére. Ez különösen hasznos, ha egy távoli gépen kell szoftverkezelési feladatokat végezni, vagy egyszerűen csak parancssorból dolgozunk.

7.1.1. Általános használat

A zypper általános szintaxisa:

zypper [globális-kapcsolók] parancs [parancs-kapcsolók] [paraméterek] ...

A zárójeles összetevők használata nem kötelező. A program végrehajtásának legegyszerűbb módja a zypper, majd azt követően a parancs beírása. Ha például alkalmazni szeretné a rendszertípus összes javítását:

zypper patch

Emellett egy vagy több általános beállítás is használható, ha azokat begépeli a parancs előtt. Például a --non-interactive beállítás azt jelenti, hogy parancs futtatása során nem kérdez semmit a program (automatikusan elfogadja az alapértelmezett válaszokat):

zypper --non-interactive patch

Egy adott parancs specifikus beállításainak használatához írja azokat a parancs mögé. Például az --auto-agree-with-licenses beállítás azt jelenti, hogy minden szükséges frissítést telepítsen a rendszerre, anélkül, hogy rákérdezzen a licenc jóváhagyására (ezek automatikusan elfogadásra kerülnek):

zypper patch --auto-agree-with-licenses

A parancsok némelyikéhez több paraméter is szükséges. Például, ha a telepítési parancsot használja, akkor meg kell adnia, hogy milyen csomagokat kíván telepíteni.

zypper install mplayer

A beállítások némelyike szintén megköveteli valamilyen paraméter megadását. A következő parancs kilistázza az ismert mintákat:

zypper search -t pattern

A fentiek mindegyike kombinálható. Például a következő parancs telepíti az mplayer és az amarok csomagokat, kizárólag a factory telepítési forrás használatával, részletes információt adva:

zypper -v install --from factory mplayer amarok

A --from kapcsoló gondoskodik arról, hogy az összes tároló engedélyezve legyen (a függőségek feloldása miatt) a meghatározott telepítési forrásból történő csomag lekérése közben.

A legtöbb zypper parancs rendelkezik dry-run beállítással, amely az adott parancs szimulációját végzi. Ez tesztelésre használható.

zypper remove --dry-run MozillaFirefox

7.1.2. Szoftverek telepítése és eltávolítása a zypper segítségével

A csomagok telepítéséhez és eltávolításához a következő parancsokat lehet használni:

zypper install csomag_neve
zypper remove csomag_neve

A zypper használatával több módon lehet csomagot telepíteni vagy eltávolítani.

a csomagnév (és a verziószám) pontos megadásával
zypper install MozillaFirefox

–vagy–

zypper install MozillaFirefox-3.5.3
a telepítési forrás álnevének és a csomag nevének megadásával
zypper install mozilla:MozillaFirefox

Ahol a mozilla a telepítési forrás álneve, ahonnan a telepítés történik.

a csomagnév helyettesítő karakterekkel történő megadásával

A következő parancs telepít minden olyan csomagot, amelynek a neve Moz-zal kezdődik. Ezt óvatosan kell használni, különösen a csomagok eltávolításánál.

zypper install Moz*
képesség szerint

Ha például egy perl modult szeretne telepíteni, de nem tudja annak a pontos nevét, akkor hasznos lehet a képesség szerinti kezelés:

zypper install 'perl(Time::ParseDate)'
képesség és/vagy architektúra és/vagy verzió szerint

A képességgel egyszerre megadható az architektúra (például i586 vagy x86_64) és/vagy a verzió is. A verziót meg kell előznie a műveleti jelnek: < (kisebb), <= (kisebb vagy egyenlő), = (egyenlő), >= (nagyobb vagy egyenlő), > (nagyobb).

zypper install 'firefox.x86_64'
zypper install 'firefox>=3.5.3'
zypper install 'firefox.x86_64>=3.5.3'
az RPM fájl elérési útja szerint

A csomaghoz megadható helyi vagy távoli elérési útvonal:

zypper install /tmp/install/MozillaFirefox.rpm
zypper install http://download.opensuse.org/repositories/mozilla/SUSE_Factory/x86_64/MozillaFirefox-3.5.3-1.3.x86_64.rpm

A csomagok telepítéséhez és eltávolításához egyidejűleg használhatók a +/- előjelek. Az emacs telepítéséhez és a vim egyidejű eltávolításához a következő parancsot kell használni:

zypper install emacs -vim

Az emacs eltávolításához és a vim egyidejű telepítéséhez a következő parancsot kell használni:

zypper remove emacs +vim

A kiadott parancs végrehajtásának megakadályozásához a csomagnév előtt - jelet kell használni, és mindig második paraméterként kell állnia. Amennyiben ez nem lehetséges, akkor a -- előtagot kell használni:

zypper install -emacs +vim       # Hibás
zypper install vim -emacs        # Helyes
zypper install -- -emacs +vim    # Helyes, ugyanaz, mint az előző
zypper remove emacs +vim         # Helyes, ugyanaz, mint az előző

Amennyiben olyan csomagot kíván automatikusan eltávolítani, amely már nem szükséges egy másik csomag eltávolítása után, használja a --clean-deps lehetőséget:

rm csomag_neve --clean-deps

Alapértelmezés szerint a zypper a kiválasztott csomagok telepítése és eltávolítása előtt, vagy hiba esetén jóváhagyást kér. Ez a tulajdonság felülírható a --non-interactive beállítás használatával. Ezt a beállítást a tényleges parancs (install, remove és patch) előtt kell megadni az alábbiak szerint:

zypper --non-interactive install csomag_neve

Ez a beállítás lehetővé teszi a zypper használatát parancsfájlokban és a cron-ban.

[Warning]Ne távolítson el szükséges rendszercsomagokat

Ne távolítson el olyan vagy hasonló csomagokat, mint a glibc, zypper, kernel. Ezek a csomagok elengedhetetlenek a rendszer működéséhez. Eltávolításuk esetén a rendszer instabillá válhat vagy leállhat.

7.1.2.1. Forráscsomagok telepítése

Amennyiben a csomaghoz tartozó forráscsomagot is telepíteni akarja, használja a következő parancsot:

zypper source-install csomag_neve
   

Ezzel a paranccsal a megadott csomag készítéséhez szükséges függőségeket is telepíti. Ha ezt nem szeretné, akkor használja a -D kapcsolót. Ha csak a csomag készítéséhez szükséges függőségeket kívánja telepíteni, akkor a -d kapcsolót kell használni.

zypper source-install -d csomag_neve # csak a forráscsomag
zypper source-install -D csomag_neve # csak a függőségek felépítése

Természetesen ez csak abban az esetben működik, ha van olyan telepítési forrás, amely tartalmazza a forráscsomagokat (ez alapértelmezésben hozzáadásra kerül, de nincs engedélyezve). A telepítési forrás kezelésével kapcsolatban tekintse meg a 7.1.4. - Telepítési források kezelése zypper használatával fejezetet.

A forráscsomagokat tartalmazó telepítési források listája a következő paranccsal kérdezhető le:

zypper search -t srcpackage

7.1.2.2. Segédprogramok

A függőségek ellenőrzéséhez és a hiányzó függőségek javításához a következő parancsot kell használni:

zypper verify

A kötelezően teljesítendő függőségek mellett, néhány csomag ajánl más csomagokat. Ezek az ajánlott csomagok csak abban az esetben kerülnek telepítésre, ha elérhetőek és telepíthetőek. Abban az esetben, ha az ajánlott csomag az azt ajánló csomag telepítése után válik elérhetővé (további csomagok vagy hardver hozzáadásakor), akkor a következő paramcsot kell használni:

zypper install-new-recommends

Ez a parancs rendkívül hasznos egy webkamera, vagy WLAN-eszköz csatlakoztatásakor. Telepíteni fogja az eszközhöz tartozó szoftvert és eszközt, ha az elérhető. Az illesztőprogram és a hozzátartozó szoftver csak abban az esetben telepíthető ha bizonyos hardverfüggőségek teljesülnek.

7.1.3. Szoftvertelepítés a zypper használatával

Három különböző módon lehet szoftvert frissíteni a zypper használatával: javítások telepítésével, új verziók telepítésével vagy a disztribúció frissítésével. Az utóbbi a zypper dist-upgrade parancs használatával valósítható meg, amelyről a 14.1. - A rendszer frissítése fejezetben esik szó.

7.1.3.1. Javítások telepítése

A hivatalos javítások telepítéséhez futtassa a következő parancsot:

zypper patch

Ebben az esetben a telepítési forrásokban található összes javítás meglétét ellenőrzi és szükség esetén telepíti. Csak a fenti parancsot kell szükség esetén megadni.

A zypper három különböző parancsot ismer a javítások meglétének ellenőrzésére:

zypper patch-check

Kiírja a szükséges javítások számát (azokat, amelyek a rendszeren vannak, de nincsenek még telepítve)

~ # zypper patch-check
Telepítési forrás adatainak beolvasása…
Telepített csomagok beolvasása…
5 javítás szükséges (1 biztonsági javítás)
zypper list-patches

Kilistázza a szükséges javításokat (azokat, amelyek a rendszeren vannak, de nincsenek még telepítve)


~ # zypper list-patches
Telepítési forrás adatainak beolvasása…
Telepített csomagok beolvasása…
 
Telepítési forrás                   | Név       | Verzió  | Kategória | Állapot
------------------------------------+-----------+---------+----------+-------
Updates for openSUSE 11.3 11.3-1.82 | lxsession | 2776    | security  | needed
zypper patches

Kilistázza az openSUSE rendszerhez elérhető javításokat, függetlenül, hogy azok telepítve vannak-e vagy sem.

Lehetőség van egy megadott hibabejelentéssel kapcsolatos javítások listázására és telepítésére. A meghatározott csomagok listázásához használja a zypper-patches parancsot az alábbi beállításokkal:

--bugzilla[=szám]

Sorolja fel az összes szükséges Bugzilla-bejegyzés számát. Természetesen lehetőség van egy megadott hibabejelentéshez tartozó javításlista megjelenítéséhez.

--cve[=szám]

Kilistázza a megadott CVE (Common Vulnerabilities and Exposures) számhoz tartozó összes szükséges javítást.

Ha egy megadott Bugzilla-bejegyzéshez, vagy CVE számhoz akar javítást telepíteni, akkor használja a következő parancsot:

zypper patch --bugzilla=szám

–vagy–

zypper patch --cve=szám 

Például, ha a CVE-2010-2713 számhoz tartozó biztonsági javítást kívánja javítani, akkor a következő parancsot futtassa:

zypper patch --cve=CVE-2010-2713

7.1.3.2. Frissítések telepítése

Ha egy telepítési forrásban vannak új csomagok, de nincsenek javítások, akkor a zypper patch hatására semmi észrevehető nem történik. Minden telepített csomag az elérhető új verzióra történő frissítéséhez a következő parancsot kell használni:

zypper update

Külön csomagok frissítéséhez meg kell adni a csomag nevét az update vagy az install paranccsal:

zypper update csomag_neve
zypper install csomag_neve

A rendelkezésre álló összes új csomag listája a következő paranccsal kérhető le:

zypper list-updates

Ez a parancs csak az olyan csomagokat listázza ki, amelyek megfelelnek az alábbi feltételeknek:

  • ugyanaz a csomag gyártója, mint a korábban telepített csomagnak

  • egy legalább ugyanolyan prioritású telepítési forrásban található, mint a korábban telepített csomag

  • telepíthető (minden függőség feloldható)

Az összes elérhető csomag (függetlenül attól, hogy telepíthető vagy nem) listája a következő módon érhető el:

zypper list-updates --all

Annak kiderítésére, hogy egy adott csomag miért nem került telepítésre, vagy frissítésre, használja az install vagy update parancsot a fent említett módon.

7.1.3.3. Frissítés új termékverzióra

A telepített rendszer új verzióra történő egyszerű frissítéséhez (például openSUSE 11.2-ről openSUSE 11.3-ra), először be kell állítani a telepítési forrásokat az aktuális openSUSE telepítési forrásokra. Ennek részletei: 7.1.4. - Telepítési források kezelése zypper használatával. Majd használja a zypper dist-upgrade parancsot a megfelelő telepítési forrásokkal. Ez a parancs biztosítja, hogy minden csomag telepítve lesz az engedélyezett telepítési forrásokból. Részletes leírás: 14.1.4. - Disztribúció frissítése zypper segítségével.

Ha meg akarja akadályozni, hogy bizonyos csomagok a disztribúciófrissítéskor ne kerüljenek frissítésre a függőségek figyelembevételével, használja a --from kapcsolót és adja meg a telepítési forrás nevét, álnevét, számát vagy URI-jét.

[Note]A zypper update és a zypper dist-upgrade közötti különbségek

A zypper update használatakor a csomagok frissítésre kerülnek az elérhető újabb verzióra a rendszerintegritás figyelembevételével. A zypper update a következő szabályokat veszi figyelembe:

nincs gyártómódosítás
nincs architektúra váltás
nincs visszafejlesztés
megtartja a telepített csomagokat

A zypper dist-upgrade parancs futtatásakor az összes csomag az engedélyezett telepítési forrásokból fog települni. Ez a szabály érvényesül, így a csomagok lehet, hogy gyártót vagy architektúrát váltanak, esetleg visszafejlesztésre kerülnek. Minden csomag eltávolításra kerül, amelynek a függősége nem teljesül a frissítés során.

7.1.4. Telepítési források kezelése zypper használatával

Minden telepítési vagy javítási zypper parancs az ismert telepítési forrásokra vonatkoznak. A rendszer által ismert összes forrás listájának lekéréséhez használja a következő parancsot:

zypper repos

–vagy–

zypper lr

Az eredmény valami ilyesmi lesz:

7.1. példa - Zypper – Ismert telepítési források listája


# | Álnév                 | Név                   | Bekapcsolva | Frissítés
--+-----------------------+-----------------------+---------+--------
1 | Updates               | Updates               | Yes        | Yes
2 | openSUSE 11.2-0       | openSUSE 11.2-0       | No         | No
3 | openSUSE-11.2-Debug   | openSUSE-11.2-Debug   | No         | Yes
4 | openSUSE-11.2-Non-Oss | openSUSE-11.2-Non-Oss | Yes        | Yes
5 | openSUSE-11.2-Oss     | openSUSE-11.2-Oss     | Yes        | Yes
6 | openSUSE-11.2-Source  | openSUSE-11.2-Source  | No         | Yes

A különböző parancsokhoz használható a telepítési forrás álneve, URI-je, vagy a zypper repos parancs kimenete során megjelenő listában található száma. A telepítési forrás álneve a telepítési forrás rövidített neve, hogy a különböző parancsoknál könnyebb legyen a használata. A telepítési források számozása a telepítési források listázását követően módosítható. Az álnevek maguktól nem módosulnak.

Alapértelmezésként, az olyan részletek, mint az URI vagy a telepítési forrás prioritása nem jelenik meg. A részletek megjelenítéséhez használja a következő parancsot:

zypper repos -d

7.1.4.1. Telepítési források hozzáadása

Forrás felvételéhez:

zypper addrepo URI álnév

Az URI lehet egy interneten található telepítési forrás, egy hálózati erőforrás, egy könyvtár, CD vagy DVD (lásd: http://en.opensuse.org/openSUSE:Libzypp_URIs). Az álnév a telepítési forrás rövid és egyedi azonosítója. Szabadon megváltoztatható, kivéve, hogy egyedinek kell lennie. A zypper figyelmeztetést jelenít meg olyan álnév választásakor, amely már használatban van.

7.1.4.2. Telepítési források eltávolítása

Amennyiben el akar távolítani egy telepítési forrást a listából, akkor használja a zypper removerepo parancsot a törölni kívánt telepítési forrás számával. Például, a 7.1. példa - Zypper – Ismert telepítési források listája telepítési forrás listában harmadikként látható telepítési forrás eltávolításához használja a következő parancsot:

zypper removerepo 3

7.1.4.3. Telepítési források módosítása

A zypper modifyrepo paranccsal lehet letiltani és engedélyezni egy telepítési forrást. Ezzel a paranccsal megváltoztathatóak a telepítési forrás tulajdonságai is (mint a frissítés, név vagy prioritás). A következő parancs engedélyezi az updates nevű telepítési forrást, bekapcsolja az automatikus frissítést és beállítja a prioritását 20-as értékre:

zypper modifyrepo -er -p 20 'updates'

A telepítési források módosítása nem korlátozódik egyetlen telepítési forrásra, mivel ezek csoportokba szervezhetők.

-a: összes telepítési forrás
-l: helyi telepítési források
-t: távoli telepítési források
-m típus: bizonyos típusú telepítési források (ahol a típus értéke a következők lehetnek: http, https, ftp, cd, dvd, dir, file, cifs, smb, nfs, hd, iso)

Telepítési forrás álnevének átnevezéséhez a renamerepo parancsot lehet használni. A következő példa módosítja a telepítési forrás álnevét Mozilla Firefox-ról firefox-ra:

zypper renamerepo 'Mozilla Firefox' firefox

7.1.5. Telepítési források és csomagok lekérdezése zypper segítségével

A zypper különböző lehetőségeket biztosít a telepítési források és a csomagok lekérdezéséhez. Az összes elérhető termék, minta, csomag, vagy javítás listázásához a következő parancsokat kell használni:

zypper products
zypper patterns
zypper packages
zypper patches

Egy bizonyos csomag, összes telepítési forrásban való kereséshez használja a search parancsot. Ez működik csomagnévre vagy csomagleírásra. A kereséshez * és ? helyettesítő karakterek használata megengedett. Alapértelmezés szerint a keresés nem nagybetűérzékeny.

zypper search firefox       # keresés a "firefox" programra
zypper search "*fire*"        # helyettesítőkarakterek használata
zypper search -d fire       # keresés a leírásokban és az összefoglalóban
zypper search -u firefox    # csak az olyan csomagok jelenjenek meg, amelyek nincsenek telepítve

Olyan csomag keresésekor, amely speciális képességeket biztosít, a what-provides parancsot kell használni. Ha például tudni szeretné, hogy melyik csomag biztosítja az SVN::Core perl modult, akkor a következő parancsot kell használni:

zypper what-provides 'perl(SVN::Core)'

Egyetlen csomag lekérdezéséhez használja az info parancsot a csomag nevének paraméterként történő megadásával, amely részletes információt jelenít meg a csomagról. A szükséges/javasolt csomagok megjelenítéséhez a --requires és/vagy a --recommends paramétereket kell használni:

zypper info --requires MozillaFirefox

A what-provides csomag hasonlít az rpm -q --whatprovides csomag parancsra, de csak az rpm parancs képes lekérdezni az RPM-adatbázisokat (az összes telepített csomag adatbázisát). A zypper viszont információt ad bármely forrás szolgáltatóinak képességeiről, nemcsak a telepítettekéiről.

7.1.6. Zypper beállítása

A zypper parancs viselkedésének rendszer és felhasználói szintű viselkedésének módosításához konfigurációs fájl használható. A rendszerszintű beállításokhoz az /etc/zypp/zypper.conf, felhasználó szintű módosításokhoz pedig a ~/.zypper.conf fájlt kell szerkeszteni. Amennyiben a ~/.zypper.conf még nem létezik, akkor a /etc/zypp/zypper.conf fájl használható sablonként: másolja le a ~/.zypper.conf fájlba és módosítsa kedvére. A fájlban lévő megjegyzések segítségére lesznek a beállításban.

7.1.7. Hibaelhárítás

Abban az esetben, ha nem sikerül elérni a csomagot a megadott telepítési forrásból (például, a zypper nem találja a megadott csomagot, annak ellenére, hogy ott van), akkor a telepítési forrás frissítése segíthet:

zypper refresh

Ha ez sem segít, próbálja meg a következőket:

zypper refresh -fdb

Ez egy teljes frissítést végez és újraépíti az adatbázist, valamint újra letölti a metaadatokat.

7.1.8. További információk

A parancssorból történő szoftverkezeléssel kapcsolatban további információ a zypper help vagy zypper help parancs kiadásával, valamint a zypper(8) man oldalaiban található. A teljes és részletes parancslista – beleértve a legfontosabb parancsokat tartalmazó cheat sheet leírást –, valamint a zypper használatával kapcsolatos információ a http://wiki.opensuse.org/SDB:Zypper_usage wikioldalon található. Az legfrissebb openSUSE verzió változáslistája a következő helyen található: http://wiki.opensuse.org/SDB:Zypper_changes_11.3

7.2. RPM – a csomagkezelő

Az RPM (Red Hat Package Manager) szolgál a szoftvercsomagok kezelésére. A legfontosabb parancsai az rpm és az rpmbuild. A sokoldalú RPM-adatbázist lekérdezve részletes információt kaphatnak a felhasználók, a rendszergazdák és a csomagkészítők a telepített szoftverekről.

Alapvetően az rpm-nek ötféle működési módja van: szoftvercsomagok telepítése, eltávolítása (vagy frissítése), az RPM-adatbázis újraépítése, RPM-bázisok vagy egyedi RPM-archívumok lekérdezése, a csomagok integritásának ellenőrzése, valamint a csomagok aláírása. Az rpmbuild parancs használható a tiszta forrásból származó csomagok előállítására.

A telepíthető RPM-archívumok egy speciális bináris formátumot használnak. Az archívumok a telepítendő programfájlokból, valamint bizonyos, az rpm által a telepítés során használt, vagy dokumentációs célokból az RPM-adatbázisban tárolt metaadatokból állnak. Az RPM-archívumok szokásos kiterjesztése .rpm.

[Tip]Szoftverfejlesztői csomagok

Egyes csomagok esetében a szoftverfejlesztéshez szükséges komponensek (könyvtárak, fejlécfájlok, beillesztendő fájlok stb.) külön csomagokba kerültek. Ezekre a fejlesztői csomagokra csak akkor van szükség, ha saját maga kívánja lefordítani a szoftvert (például a legfrissebb GNOME csomagokat). Az ilyen csomagokat a nevükben található -devel karaktersorozat jelzi, mint például az alsa-devel, gimp-devel vagy a libkde4-devel.

7.2.1. A csomagok hitelességének ellenőrzése

Az RPM-csomagok GPG-aláírással rendelkeznek. Az RPM-csomag aláírásának ellenőrzéséhez használja az rpm --checksig csomag_neve-1.2.3.rpm parancsot, amellyel meggyőződhet arról, hogy a csomag készítője a Novell/SUSE, vagy más megbízható szervezet. Ez különösen ajánlott az internetről származó frissítőcsomagok esetében.

7.2.2. Csomagok kezelése: Telepítés, frissítés és eltávolítás

Általában egy RPM-archívum telepítése igen egyszerű: rpm -i csomag_neve.rpm. Ez a parancs telepíti a csomagot, de csak akkor, ha a függőségek teljesülnek és nincs ütközés más csomagokkal. Egy hibaüzenet jelzi, hogy a a függőségi követelményeket miatt az rpm számára szükséges ezeket a csomagokat telepíteni. A háttérben az RPM-adatbázis garantálja, hogy ne lépjen fel semmilyen ütközés – egy adott fájl csak egy csomaghoz tartozhat. Különféle paraméterekkel az rpm kényszeríthető ezen alapértelmezések figyelmen kívül hagyására, de ezt csak szakértőknek ajánljuk. Egyébként a rendszer integritását veszélyezteti, illetve előfordulhat, hogy nem lesz képes frissíteni a rendszert.

A -U vagy --upgrade és -F vagy --freshen paraméterek használhatók a csomagok frissítésére (például: rpm -F csomag_neve.rpm). Ez a parancs törli a régi változat fájljait és azonnal telepíti az új fájlokat. A kétféle lehetőség közötti különbség az, hogy a -U telepít olyan csomagokat, amelyek korábban nem léteztek a rendszerben, a -F csupán a meglévő csomagokat frissíti. Frissítéskor az rpm a konfigurációs fájlokat is frissíti óvatosan, az alábbi stratégia alkalmazásával:

  • Ha a rendszergazda nem módosította a konfigurációs fájlt, akkor az rpm telepíti a megfelelő fájl új verzióját. A rendszergazda beavatkozására nincsen szükség.

  • Ha a rendszergazda módosította a konfigurációs fájlt a frissítés előtt, akkor az rpm elmenti a fájlt .rpmorig vagy .rpmsave (tartalék fájl) kiterjesztéssel, és telepíti az új csomagban található változatot (de csak akkor, ha az eredetileg telepített fájl és az új változat eltérő). Ebben az esetben hasonlítsa össze az elmentett fájlt (amely .rpmorig vagy .rpmsave) az újonnan telepített fájllal és ha szükséges, végezze el az új fájlban a szükséges módosításokat. Ezután feltétlenül törölje az .rpmorig és.rpmsave fájlokat a jövőbeni frissítések problémáinak elkerülése érdekében.

  • Az .rpmnew fájlok akkor jelennek meg, ha a konfigurációs fájl már létezik és ha a noreplace címke lett megadva a .spec fájlban.

Frissítés után az .rpmsave és .rpmnew fájlokat törölni kell az összehasonlítás után, hogy ne zavarják a későbbi frissítéseket. Az .rpmorig kiterjesztést akkor használja a program, ha a fájl korábban nem volt ismert az RPM-adatbázisban.

Ellenkező esetben az .rpmsave név kerül alkalmazásra. Más szavakkal, az .rpmorig egy idegen formátumról RPM-re frissítés eredménye. Az .rpmsave egy régebbi RPM-ről egy újabb RPM-re frissítés eredménye. Az .rpmnew fájlokból nem derül ki, hogy a rendszergazda módosította-e a konfigurációs fájlt. Az ilyen fájlok listája a /var/adm/rpmconfigcheck helyen található. Egyes konfigurációs fájlok (például az /etc/httpd/httpd.conf) nem íródnak felül a folyamatos működés fenntartása érdekében.

A -U kapcsoló nem egyenértékű a -e paraméterrel történő eltávolítással és a -i paraméterrel történő telepítéssel. Ahol csak lehet, inkább a -U paramétert használja.

Egy csomag eltávolításához írja be, hogy rpm -e csomag_neve.rpm. Az rpm csak akkor törli a csomagot, ha nincsenek feloldatlan függőségek. Elvileg lehetetlen például törölni a Tcl/Tk-t addig, amíg egy másik alkalmazás használja. Még ebben az esetben is, az RPM az adatbázistól kér segítséget. Ha az ilyen törlés, bármilyen okból és akár furcsa körülmények között is lehetetlennek bizonyul (még akkor is, ha semmilyen további függőség nincs), akkor célszerű lehet újraépíteni az RPM-adatbázist a --rebuilddb paraméter használatával.

7.2.3. Az RPM és a javítások

A rendszer működési biztonságának garantálásához időről időre frissítőcsomagokat kell telepíteni a rendszeren. Korábban egy csomag egy hibáját csak a teljes csomag cseréjével lehetett megoldani. Nagy csomagoknál, ahol a hibajavítás kis fájlokban történt, ez könnyen előfordult. A SUSE RPM azonban lehetővé teszi az egyes csomagok foltozását.

A legfontosabb szempontokat a pine példáján keresztül mutatjuk be:

A javító RPM megfelelő-e a rendszerhez?

Ennek ellenőrzéséhez először le kell kérdezni a csomag telepített verzióját. A pine esetében erre a következő parancs szolgál:

rpm -q pine
pine-4.44-188

Ezután ellenőrizni kell, hogy a javító RPM megfelelő-e a pine adott verziójához:

rpm -qp --basedon pine-4.44-224.i586.patch.rpm 
pine = 4.44-188
pine = 4.44-195
pine = 4.44-207

Ez a javítás a pine háromféle verziójához jó. Mivel a telepített verzió is megtalálható a listában, a javítás telepíthető.

Milyen fájlokat cserél le a javítás?

A javítás által érintett fájlok egyszerűen megtekinthetők a javító RPM-ben. Az rpm -P paraméterével speciális javítási funkciók választhatók ki. A fájlok az alábbi paranccsal listázhatók:

rpm -qpPl pine-4.44-224.i586.patch.rpm
/etc/pine.conf
/etc/pine.conf.fixed
/usr/bin/pine

vagy ha a javítás már telepítve van, akkor az alábbival:

rpm -qPl pine
/etc/pine.conf
/etc/pine.conf.fixed
/usr/bin/pine
Hogyan történik a javító RPM telepítése a rendszerben?

A javító RPM-ek ugyanúgy használhatók, mint a szokásos RPM-ek. Az egyetlen különbség, hogy a javítandó RPM-nek már telepítve kell lennie.

Milyen javítások vannak telepítve a rendszeren és mely csomagokhoz?

A rendszeren telepített összes javítást az rpm -qPa parancs listázza ki. Ha csak egyetlen javítás van telepítve egy új rendszeren (mint a fenti példában), akkor a lista így néz ki:

rpm -qPa
pine-4.44-224

Az RPM-adatbázisból lekérdezhető az is, hogy mely csomagverziók lettek eredetileg telepítve. A pine esetében ezt az információt a következő paranccsal lehet kiíratni:

rpm -q --basedon pine
pine = 4.44-188

További információk, így például az RPM javítási funkciójáról az rpm és az rpmbuild parancsok kézikönyvoldalain olvashatók.

[Note]Hivatalos openSUSE frissítések

Annak érdekében, hogy a letöltött frissítés mérete a lehető legkisebb maradjon, a hivatalos openSUSE frissítések nem RPM, hanem delta RPM csomagok. Ennek részletes leírása: 7.2.4. - Delta RPM-csomagok.

7.2.4. Delta RPM-csomagok

A delta RPM-csomagok egy RPM-csomag régebbi és új változata közötti különbséget tartalmazzák. Egy delta RPM alkalmazása egy régi RPM-en egy teljesen új RPM-et fog eredményezni. Ha nincs meg a régi RPM-példány, a delta RPM a telepített RPM-mel is képes együttműködni. A delta RPM csomagok még a javító RPM-eknél is kisebbek. Ez hasznos, ha a frissítőcsomagokat az interneten keresztül kell elküldeni. A hátránya, hogy a delta RPM csomagokkal végzett frissítési műveletek lényegesen jobban megterhelik a CPU-t, mint a sima és javító RPM-ek használata.

A prepdeltarpm, writedeltarpm és applydeltarpm bináris fájlok a delta RPM készlet (deltarpm csomag) részei. Ezek segítenek a delta RPM-csomagok elkészítésében és alkalmazásában. Az alábbi parancsokkal készíthető egy új.delta.rpm. A következő parancs feltételezi, hogy az régi.rpm és új.rpm rendelkezésre áll:

prepdeltarpm -s seq -i info old.rpm > old.cpio
prepdeltarpm -f new.rpm > new.cpio
xdelta delta -0 old.cpio new.cpio delta
writedeltarpm new.rpm delta info new.delta.rpm

Végül távolítsa el az régi.cpio, új.cpio és delta ideiglenes munkafájlokat.

Az applydeltarpm használatával előállítható az új RPM, akár a fájlrendszerből is, ha a régi csomag már telepítve van:

applydeltarpm new.delta.rpm new.rpm

Vagy pedig a -r paraméter használatával származtatható a régi RPM-ből, a fájlrendszer elérése nélkül:

applydeltarpm -r old.rpm new.delta.rpm new.rpm

A műszaki részletek az /usr/share/doc/csomagok/deltarpm/README fájlban olvashatók.

7.2.5. RPM-lekérdezések

A -q paraméter megadása esetén az rpm rpm lekérdezéseket indít. Megvizsgálható egy adott RPM-archívum (a -p paraméterrel) és lekérdezhető a telepített csomagok RPM-adatbázisa. Többféle kapcsoló is használható a kívánt adatok típusának megadására. Lásd: 7.1. táblázat - A legfontosabb RPM-lekérdezési paraméterek.

7.1. táblázat - A legfontosabb RPM-lekérdezési paraméterek

-i

Csomaginformáció

-l

Fájllista

-f FÁJL

A FÁJL fájlt tartalmazó csomag lekérdezése (a FÁJL paramétert teljes elérési úttal kell megadni)

-s

Fájllista állapotinformációval (magával vonja a -l alkalmazását)

-d

Csak a dokumentációs fájlok listázása (magával vonja a -l alkalmazását)

-c

Csak a konfigurációs fájlok listázása (magával vonja a -l alkalmazását)

--dump

Részletes fájllista (a -l, -c és -d paraméterekkel együttes használathoz)

--provides

Azon csomagok funkcióinak listázása, amelyeket egy másik csomag kérhet a --requires paraméterrel

--requires, -R

A csomag által igényelt képességek vagy funkciók

--scripts

Telepítési parancsfájlok (telepítés előtti, utáni és eltávolító)


Például az rpm -q -i wget parancs hatására a 7.2. példa - rpm -q -i wget által mutatott eredményt kapjuk.

7.2. példa - rpm -q -i wget

Name        : wget                         Relocations: (not relocatable)
Version     : 1.11.4                            Vendor: openSUSE
Release     : 1.70                          Build Date: Sat 01 Aug 2009 09:49:48 CEST
Install Date: Thu 06 Aug 2009 14:53:24 CEST      Build Host: build18
Group       : Productivity/Networking/Web/Utilities   Source RPM: wget-1.11.4-1.70.src.rpm
Size        : 1525431                          License: GPL v3 or later
Signature   : RSA/8, Sat 01 Aug 2009 09:50:04 CEST, Key ID b88b2fd43dbdc284
Packager    : http://bugs.opensuse.org
URL         : http://www.gnu.org/software/wget/
Summary     : A Tool for Mirroring FTP and HTTP Servers
Description :
Wget enables you to retrieve WWW documents or FTP files from a server.
This can be done in script files or via the command line.
[...]

A -f csak akkor működik, ha a teljes fájlnevet adja meg, elérési úttal együtt. Annyi fájlnevet adhat meg, amennyi csak jólesik. Például az alábbi parancs:

rpm -q -f /bin/rpm /usr/bin/wget

eredménye a következő:

rpm-4.8.0-4.3.x86_64
wget-1.11.4-11.18.x86_64

Ha csak a fájlnév egy része ismert, használjon egy parancsfájlt (7.3. példa - Parancsfájl csomagok kereséséhez). A részleges fájlnevet adja át paraméterként a parancsfájlnak.

7.3. példa - Parancsfájl csomagok kereséséhez

#! /bin/sh
for i in $(rpm -q -a -l | grep  $1); do
    echo "\"$i\" is in package:"
    rpm -q -f $i
    echo ""
done

Az rpm -q --changelog rpm parancs egy csomag (ebben az esetben az rpm csomag) részletes adatait írja ki idő szerint sorrendben.

A telepített RPM-adatbázis segítségével ellenőrzések is végezhetők. Ezek a -V vagy --verify paraméterrel indíthatók. E paraméter használatakor az rpm megjeleníti egy csomagnak a telepítés óta módosult fájljait. Az rpm nyolc karakterszimbólum segítségével jelzi az alábbi módosításokat:

7.2. táblázat - RPM ellenőrzési paraméterek

5

MD5-ellenőrzőösszeg

S

Fájlméret

L

Szimbolikus lánc

T

Módosítás ideje

D

Fő- és aleszközszámok

U

Tulajdonos

G

Csoport

M

Mód (jogosultságok és fájltípus)


Konfigurációs fájlok esetében a c betű íródik ki. Például az /etc/wgetrc (wget csomag) módosításainak kiírása:

rpm -V wget
S.5....T c /etc/wgetrc

Az RPM-adatbázis fájljai a /var/lib/rpm könyvtárban találhatók. Ha a /usr partíció helyfoglalása 1 GB, akkor ez az adatbázis közel 30 MB-ot foglal, különösen teljes frissítés után. Ha az adatbázis sokkal nagyobb a vártnál, akkor célszerű újraépíteni az adatbázist a --rebuilddb paraméter használatával. Előtte azonban mentse el a régi adatbázist. A cron és a cron.daily parancsfájl napi másolatokat készít az adatbázisról (gzip-pel tömörítve) és a /var/adm/backup/rpmdb könyvtárba menti őket. A másolatok számát az /etc/sysconfig/backup fájl MAX_RPMDB_BACKUPS változója szabályozza (alapértelmezés: 5). Egy mentés mérete mintegy 1 MB a /usr minden 1 GB-jára.

7.2.6. Forráscsomagok telepítése és lefordítása

A forrásfájlokat tartalmazó csomagok .src.rpm (source RPM, forrás RPM) kiterjesztéssel rendelkeznek.

[Note]Telepített forráscsomagok

A forráscsomagok átmásolhatók a telepítési adathordozóról a merevlemezre és a YaST segítségével csomagolhatók ki. A csomagkezelő azonban nem jelzi, hogy telepítve vannak ([i]). Ez azért van, mert a forráscsomagok nem kerülnek be az RPM-adatbázisba. Csak az operációs rendszer telepített szoftverei vannak felsorolva az RPM-adatbázisban. Egy forráscsomag telepítésekor csak a forráskód kerül be a rendszerbe.

Az alábbi könyvtáraknak az rpm és rpmbuild rendelkezésére kell állniuk az /usr/src/packages könyvtárban (hacsak nincsenek megadva egyedi beállítások például az /etc/rpmrc fájlban):

SOURCES

Az eredeti forrásokat (.tar.bz2 vagy .tar.gz fájlok stb.) és a disztribúcióspecifikus módosításokat (általában .diff vagy .patch fájlok) tartalmazó könyvtár.

SPECS

A .spec fájlokat tartalmazó könyvtár, amelyek az összeállítási (build) folyamatot vezérlő meta Makefile fájlokhoz hasonlóak.

BUILD

Az összes kicsomagolt, javításokkal ellátott és lefordított forrásokat tartalmazó könyvtár.

RPMS

A kész bináris csomagokat tartalmazó könyvtár.

SRPMS

itt találhatók a forrás RPM-ek

Egy forráscsomag YaST-tal történő telepítése közben az összes szükséges összetevő telepítődik az /usr/src/packages: könyvtárban: a forrás és a módosítások a SOURCES, a vonatkozó .spec fájl pedig a SPECS könyvtárban.

[Warning]

Ne kísérletezzen a rendszerkomponensekkel (glibc, rpm, sysvinit stb.), mivel ez veszélyezteti a rendszer stabilitását.

Az alábbi példa a wget.src.rpm csomag telepítését mutatja be. A forráscsomag telepítése az alábbi listához hasonló listát eredményez:

/usr/src/packages/SOURCES/wget-1.11.4.tar.bz2
/usr/src/packages/SOURCES/wgetrc.patch
/usr/src/packages/SPECS/wget.spec

Az rpmbuild -bX /usr/src/packages/SPECS/wget.spec parancs indítja el a fordítást. Az X helyére az összeállítási folyamat különböző szakaszai kerülnek (a részletek a --help paraméterrel elindított parancs kimenetén, vagy az RPM-dokumentációban olvashatók). Alább csak egy egészen rövid magyarázat következik:

-bp

A források előkészítése az /usr/src/packages/BUILD könyvtárban: kicsomagolás és foltozás.

-bc

Ugyanaz, mint a -bp, de fordítással.

-bi

Ugyanaz, mint a -bp, de az összeállított szoftver telepítésével. Vigyázat: ha a csomag nem támogatja a BuildRoot funkciót, akkor előfordulhat, hogy felülíródnak egyes konfigurációs fájlok.

-bb

Ugyanaz, mint a -bi, de a bináris csomag létrehozásával. Ha a fordítás sikeres, a bináris fájl a /usr/src/packages/RPMS könyvtárban kell, hogy legyen.

-ba

Ugyanaz, mint a -bb, de a forrás RPM létrehozásával. Ha a fordítás sikeres, a bináris fájl az /usr/src/packages/SRPMS könyvtárban kell, hogy legyen.

--short-circuit

Egyes lépések kihagyása.

A létrehozott bináris RPM most már telepíthető az rpm -i, vagy még inkább az rpm -U paranccsal. Az rpm-mel telepítve a csomag megjelenik az RPM-adatbázisban.

7.2.7. RPM-csomagok lefordítása a build segítségével

Sok csomag esetében az a veszély, hogy nemkívánatos csomagok is bekerülnek a futó rendszerbe az összeállítási folyamat közben. Ennek megakadályozására használható a build parancs, amelyik létrehoz egy jól definiált környezetet, amelyben a csomag összeállítása zajlik. E chroot-környezet létrehozásához a build parancsfájlnak meg kell adni a teljes csomagfát. Ez a fa biztosítható a merevlemezről, NFS-en keresztül, vagy DVD-ről. A megfelelő helyet a build --rpms könyvtár parancs adja meg. Szemben az rpm paranccsal, a build parancs a forráskönyvtár SPEC fájlját keresi meg. A wget vadonatúj (a fenti példához hasonló) összeállításához, amennyiben a DVD a rendszerbe a /media/dvd ponton van felcsatolva, adja ki a következő parancsot, mint root felhasználó:

cd /usr/src/packages/SOURCES/
mv ../SPECS/wget.spec .
build --rpms /media/dvd/suse/ wget.spec

Létrejön egy minimális környezet a /var/tmp/build-root könyvtár alatt. A csomag ebben a környezetben készül el. Befejezés után az eredményül kapott csomagok a /var/tmp/build-root/usr/src/packages/RPMS könyvtárban találhatók.

A build parancsfájl többféle kiegészítő paraméter használatát is lehetővé teszi. A parancsfájl például előnyben részesíthet saját RPM-eket, kihagyhatja az összeállítási környezet inicializálását, vagy a fenti fázisok közül egyre korlátozhatja az rpm parancs használatát. További információ a build --help paranccsal vagy a build kézikönyvoldalán érhető el.

7.2.8. Eszközök az RPM-archívumokhoz és az RPM-adatbázishoz

A Midnight Commander (mc) képes megjeleníteni az RPM-archívumok tartalmát és kimásolni egy részüket. Az archívumokat virtuális fájlrendszerekként jeleníti meg, amelyekben a Midnight Commander szinte minden szokásos parancsa használható. A HEADER például az F3 billentyűvel tekinthető meg. Az archívumstruktúra bejárható a kurzorbillentyűk és az Enter segítségével. Az archívum egyes elemei kimásolhatók az F5 billentyűvel.

YaST-modulként egy teljes funkciókörű csomagkezelő is elérhető. Ennek részletes leírása: 3. fejezet - Szoftver telepítése és eltávolítása.