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.