Rpm használati kézikönyv, rendszer, kernel, segédprogramok, cikkek, linuxcentre könyvtár, - szakértő

RPM: Használati útmutató

Ebben a cikkben megpróbálnak olyan témákat megfontolni, mint az rpm segédprogram parancsok formátuma, a csomag formátuma és a spec fájl, a csomagok építésének sorrendje stb.

[Vlad Goriletsky (gorelets AT rambler.ru)]

Az RPM a Red Hat csomagkezelője, a Red Hat belsejében élő és növekvő szoftverkezelő rendszer. Az RPM rekurzív definíciója a stílust tekintve nem UNIX - RPM csomagkezelő. Ha ezt a lehetőséget választja, írja: "élő és fejlődő a nyílt forráskódban". Általában ez kellemes. Ha megérinti a formális oldalt, az RPM a GPL v.2 alatt van engedélyezve.

Érdekünk ebben a rendszerben, mivel létezik egy sor rpm-alapú disztribúció, vagyis a disztribúció, a gyűjtemény rpm-csomagok kapcsolódó függőségek összhangban legyen a szükséges szerelési-támogatási mechanizmusok. Az RPM-alapú operációs rendszerek forgalmazói között vannak az osztrák támogatások, mint például a Red Hat, a Suse (most a Novell részleg), a Mandrake és sok más, hosszú életű és egynapos projekt.

Az elosztásban és az egyéni fejlesztések formájában számos grafikus segédeszköz áll rendelkezésre. Mivel a csomagolási rendszer egyes szolgáltatásainak elrejtése, ahogy ez gyakran történik, ezekkel a segédprogramokkal nem foglalkozunk velük. Ezenkívül a helyzetek túlnyomó többségében a konzolon lévő rpm-csomagok használata sokkal egyszerűbb és átláthatóbb (kivéve néhány program különböző változatainak függőségi összetett kombinációit mások számára).

Ez a cikk megpróbálja vizsgálja fontos témákat, mint például a méret rpm segédprogram parancsokat, a csomag mérete és spec-fájl, csomagolás szerelési sorrendben, és szinte nem befolyásolja az építészet, az RPM, mint a rendszergazdák ezeket a részleteket nem fontos, és a fejlesztők elsősorban felületek, mint például a könyvtárak librpm. Ezért a legjobb hagyományokban a "belülről elrendezett" érdeklődést tudatni kell a forráskóddal.

A rpm (nem RPM) vizsgálata a szükséges eszközök közül a Midnight Commander számára. Őszintén szólva, nehéz elképzelni egy rpm-csomagok fejlesztőjét, amely nem használja az MC-t. Ennek okai tovább fogunk beszélni. A további feltételeket fel kell hívni bizonyos mennyiségű szabad idő és a türelem.

Mindegyik példát a Suse Linux 10.0 operációs rendszeren futtattuk.

Felszínes megjelenés.

Mivel az rpm megmenti a felhasználót az operációs rendszerbe telepített szoftver összes részletének megőrzéséhez, olyan mechanizmusnak kell lennie, amely ezeket a funkciókat a csomagkezelőben végzi. És ez: ez az rpm adatbázis. A V.4 előtti verziókban az alapmotort statikusan összeállították a csomag részeként, v.4 a külső BDB (Berkeley adatbázist) használja. A segédprogram magas szintű parancsfelületet tartalmaz, amely lehetővé teszi, hogy lekérdezze az adatbázisokat a telepített csomagokról és függőségükről.

Kezdjük a példákat. Az rpm segédprogram különböző üzemmódokban működik, az üzemmódokat a fő parancs gombja határozza meg. Ezenkívül számos olyan opció létezik, amely bármelyik üzemmódban működik.

A csomag telepítéséhez használja a következő parancsformátumot:

# rpm -i <имя пакета>

És itt az első kellemetlenséggel szembesülünk, mivel a csomag nevét teljes egészében meg kell adni, annak összes verziójával és szerelési számával együtt. Az a tény, hogy a segédprogram egyszerűen keresi a megadott elérési útvonalat ezzel a névvel, ezért a névnek pontosan meg kell egyeznie. Például a rendszeremben az mc telepítéséhez a következőket kell tennem (feltételezve, hogy Ön rendelkezik felhatalmazó jogosultságokkal):

# rpm -i / elérési út / mc-4.6.1-5.i586.rpm

De egy csomag eltávolításához egyszerűen megadhatja a csomag nevét mc-ként, mert ebben az esetben a segédprogram már hozzáfér a csomagadatbázishoz:

A csomagfrissítési módban a -U kapcsolóval lehet dolgozni. Ha egy bizonyos verziójú csomagot szeretne telepíteni, nem kell tudnia, hogy vannak-e a csomag korábbi verziói a rendszerben, elegendő a -U használatához. A segédprogram elérhető változatai frissítésre kerülnek, és csomag hiányában - telepítsék. Ezért a leggyakrabban használt telepítési parancs a következőhöz hasonló:

# rpm -Uhv / elérési út / mc-4.6.1-5.i586.rpm

vagy a hálózati adattárból:

# rpm -Uhv ftp: // ivanov: [email protected]: 7020 / elérési út / mc-4.6.1-5.i586 .rpm

Még két érdekes mód: ellenőrzés és lekérdezés mód. A telepített csomagok hitelesítési lehetőségeinek értékeléséhez a következő kísérletet végezzük el: egyes csomagok fájlját károsítjuk és rpm-sel ellenőrizzük.

Például szinte mindig a futtatható archív archívum jön először a / bin könyvtár parancsainak listáján. Ez a segédprogram megjeleníti a rendszer processzor architektúrájával kapcsolatos információkat a szabvány kimeneten. Annak megállapításához, hogy mely csomag tartalmazza ezt a fájlt, használja a lekérdezési módot, amelyben az rpm indítása a -q opcióval kezdődik. A -f opció megkérdezi, melyik csomaghoz tartozik ez a fájl:

Most készítsen biztonsági másolatot a programról, majd adj hozzá egy karaktert a fájlhoz:

# cp / bin / arch / bin / arch_back

# echo "1" >> / bin / arch

Ezután a csomagellenőrzési mechanizmusnak tájékoztatnia kell a meglévő problémákat:

# rpm -V util-linux-2.12q-26

A kimeneti sorban néhány karakter jelenik meg a csomagfájl neve előtt (ha az ellenőrzés sikeres, és nincsenek károk, nem lesz kimenet), amelyek jelzik a hibák jellegét. Ebben az esetben az s azt jelenti, hogy megváltoztatja a fájlméretet, 5 - az md5 fájl aláírásának megszegését, T - az utolsó módosítás időtartamának megváltoztatásával (vagyis a fájl másolásának idejét a rendszerünkben).

Állítsa vissza a fájlt, és futtassa újra a tesztet:

# mv / bin / arch_back / bin / arch

# rpm -V util-linux-2.12q-26

és látni fogjuk, hogy minden rendben van, kivéve a file / bin / arch utolsó módosításának idejét, amely megfelel a fordított másolás idejének. Az ilyen információ segít az adminisztrátornak azonosítani néhány problémát és csomagot - jelöltek az újratelepítéshez.

Fejlett funkciók.

A működési módokon kívül az rpm segédprogram számos lehetőséggel rendelkezik, amelyek közül egyesek egy adott módhoz kapcsolódnak, mások többféleképpen értelmezhetők, vagy egyáltalán. Néhány példa a gyakran használt lehetőségekre.

A telepítés-törlés módokban gyakran előfordul, hogy a --nodeps vagy --force opciókat kell használnod. Az első lehetővé teszi a csomag telepítését (eltávolítása), függetlenül attól, hogy teljesülnek-e függőségek, a második pedig telepítenie kell a csomagot, még akkor is, ha a rendszerben újabb verziók vannak. Néhány érdekesség az opciók - aid, amelyek automatikusan kielégítik a feltörekvő függőségeket és a tesztet, ami a műveletek tesztelését jelenti, vagyis a kialakulóban lévő problémákkal kapcsolatos összes következtetést végre fogják hajtani, de semmilyen valós műveletet nem hajtanak végre. Nagyon kényelmes egy rendszerhiba szimulálása bármely akció következtében.

A lekérdezési mód beállításai nagyméretű funkciókészletet biztosítanak. A csomagról és a fájlokról szinte bármilyen információt kaphat, kezdve a csomag rövid segítségével (az -qi kulcsok kombinációjával) és a csomag fájlok (-ql) listájával, és a csomag bináris fejlécének egyes szolgáltatási mezőinek értékével. Ezeket a képességeket a megfelelő szűrőgombokkal vagy a - queryformat opció segítségével hajtja végre, amely lehetővé teszi, hogy csak a megrendelt szolgáltatás mezőket jelenítse meg. Például a parancsot

# rpm -q --queryformat% <имя пакета>

megjeleníti a csomag leírását és a parancsot

# rpm -q --queryformat% <имя пакета>

- Az elosztás neve, amely tartalmazza a csomagot. És az -qp -qp cseréje lehetővé teszi ugyanazokat az információkat, mint a rendszeren nem telepített csomag rpm fájljából. Csak a csomag konfigurációs fájljairól, vagy csak a dokumentációs fájlokról, vagy csak olyan fájlokról kaphat jegyzéket, amelyek szabályos kifejezést tartalmaznak a névben, vagyis elvben bármi.

Nagyon gyakran (a lustaság a fejlődés motorja) igényeket használnak, amelyek kimenetét külső szűrőkre irányítják át. Tehát egy lekérdezés a telepített fájlokról, átirányítva a grep-re, segít megtalálni a megadott névvel ellátott csomagot vagy a megadott karakterláncot tartalmazó nevet. csapat

# rpm -qa | grep mc

a mc kombináció nevében szereplő csomagok listája és a parancs

# rpm -qa | grep ^ mc

azon csomagok listája, amelyek nevei mc-vel kezdődnek.

Helyhiány miatt nem foglalkozunk ilyen egzotikus, de fontos lehetőség a fejlesztő számára, mint --showrc, amely lehetővé teszi, hogy megjelenítse a fájlok tartalmát, szkriptek és makrók rpmrc fájlok és makrók a szabványos kimenetre, vagy egy fájlt, és még sokan mások. Megjegyzendő, hogy az RPM-t részletes man dokumentációval látják el.

Mi van benne.

Néhány szó arról, hogy mi történik a telepítés és a csomag eltávolítása során. Amint már említettük, az rpm automatizálja a rutin műveleteket. Csomagok telepítésekor (törölve) bármely bonyolult műveletet elhelyezhet a telepített csomagok konfigurálásához, vagy eltávolíthatja a törölt csomagok tevékenységének nyomai szkriptekké. Attól függően, hogy ezek a szkriptek milyen pozícióban vannak a kanonikus művelet sorozatban, például a csomag telepítésekor, ezeket a szkripteket előtelepítési vagy telepítés utáni szkripteknek nevezik. A csomagolás telepítésekor az rpm által inicializált műveletek standard sorrendje:

Ellenőrizhetők a lehetséges konfliktusok (a konfliktus leggyakoribb változata - egy újabb verzió azonos nevű csomagja telepítve van a rendszerben);

a konfigurációs fájlokat feldolgozzák;

a bináris fájlok átmásolódnak a szükséges könyvtárakba;

a telepítés utáni szkriptek végrehajtása;

a csomag adatbázis frissül.

Az rpm-csomag formátuma.

A csomagformátum egy bináris fejlécből és egy cpio archívumból áll, amely egy ilyen könyvtárfában bináris fájlokat tartalmaz, amelyek a csomag telepítése után lesznek a rendszerben. Az mc fájlkezelő számos archívumot ér, beleértve az rpm csomagot is. Ha a panel mc kiemelés rpm-csomagot és nyomjuk meg, látni fogjuk, egy pszeudo-fájlrendszer, amely az alábbi összetevőkből áll: egy könyvtár INFO, CONTENTS.cpio archívum, egyikben a bináris fájlokat, fejlécfájlba és psevdoskriptov telepíteni és frissíteni. Az INFO könyvtár olyan fájlokat tartalmaz, amelyek neve megfelel a spec fájl mezõinek nevének, a tartalom a mezõértékekhez. A HEADER fájl lényegében ugyanaz, csak egy fájlban. Az INSTALL és a UPGRADE linkek megfelelnek az rpm -ih parancsoknak <имя пакета> és rpm-Uh <имя пакета>. Vagyis, ha rájuk kattintasz, ezek a lépések előfordulnak.

Valódi formátumban nincs fájlrendszer. Egyszerűen a mc tudja, hogyan értelmezheti a csomag bináris fejlécét saját módon, amelyért a fejlesztők nagy tisztelettel rendelkeznek.

Ha kívánja, kiválaszthatja a cpio archívumot a teljes csomagból. Ehhez van egy segédprogram rpm2cpio.

Összegyűjtjük a csomagot.

A v.4 verziójú változatban a csomaggyártási mód különálló segédprogram - rpmbuild. A leghatékonyabb módszert használjuk a technológia tanulmányozására, vagyis egy minta rpm-csomagot állítunk össze. Nem kérdéses, hogy mi kell a programnak, amit rpm-be csomagolunk. Azt mondja: "Hello world!"

Az RPM-alapú elosztásban egy speciális könyvtárfa található, amely kizárólag építési csomagok számára készült. A / usr / src fájlban található (a Suse Linux-ban / in / usr / src / packages), és tartalmazza a BUILD, RPMS, SOURCES, SPECS, SRPMS könyvtárakat. Ezek megfelelően vannak tervezve az ideiglenes összeszerelési könyvtárak tárolására, a bináris fordulatszám összeszerelésére, a forráskódra, a specifikációs fájlok tárolására és az összeszerelt src.rpm csomagokra. A Src.rpm forráskódot és specifikációs fájlokat tartalmaz, és a célgépeken újraképítésre szánják annak érdekében, hogy jobban alkalmazkodhassanak a gépek architektúrájához és rendszerkörnyezetéhez. Az összeszereléshez szükségünk van a program forráskódjára, amelyet hagyományosan a tar.gz vagy a tar.bz2 csomagolásban és a spec-fájlban csomagolunk. Az RPM-hez tartozó spec fájl közel azonos a makefile-hez. Ez egy részletes forgatókönyv, hogy mi történjen az összes szükséges definícióval és szervizmezővel való összeállítás során. Tehát az ügyért.

int fő (int argc, char ** argv)

Ne felejtsd el az üres karakterláncot a fájl végén. A forráskódot a tar.gz-ben csomagoljuk (a parancsot a / usr / src / packages / SOURCES könyvtárban adjuk meg):

# tar cvfz ./hi-0.1.tar.gz ./hi.c

Összegzés: Üdvözlő segédprogram.