Információ lekérése
Ebben a fejezetben az informácó lekérésének
a módját tárgyaljuk.
Információt kérhetünk le egy fileról, feltelepített
csomagról (hála a jól szervezett rpm adatbázisnak),
és azok minden nemű információiról, tartalmáról
kezdve a leírástól a fileokon át a scriptekig.
Az információt általános esetben az rpm -q
<file neve> paranccsal kérhetünk le.
Akkor most lássuk az opcióit:
- rpm -q -a:
Kilistázza az összes feltelepített csomagot.
Ez igen terebélyes lista is lehet, így
érdemes
ezt a listát átirányítani egy fileba. Például
a /tmp/lista fileba menti el a listát a
következő
parancs:
rpm -q -a >/tmp/lista
- rpm -q -f <file neve>:
E opció segítségével megtudhatod, hogy
a
gépeden lévő file melyik csomaghoz tartozik.
Például -rpm -qf /bin/ls parancs hatására
a következőt kapod:
fileutils-3.12-3
Tehát a /bin/ls file a 3.12-3-as verziójú
fileutils csomaghoz tartozik. De az is
megeshet,
hogy egy filera azt az üzenetet kapod,
hogy
az nem tartozik egyetlen feltelepített
csomaghoz
sem. Itt két eset lehetséges. Vagy egyáltalán
nincs egy csomagba a file, vagy van. Ez
utóbbi
esetben a következő képpen kell eljárni,
hogy megtudjuk, kihez is tartozik a file:
rpm -qf /usr/X11/bin/xterm
file /usr/X11/bin/xterm is not owned by
any
package
Most nézzük meg mondjuk a /usr könyvtár
tartalmát:
ls -lF /usr
...
X11 -> X11R6
X11R6
...
Tehát a /usr/X11 könyvtár egy szimbolikus
link a /usr/X11R6 könyvtárra. Most futtassuk
e könytárral az rpm-et:
rpm -q -f /usr/X11R6/bin/xterm
Xfree86-3.1.2-5
Mit tehetünk e nehézségek kiküszöbölésére?
A megoldás egyszerű. Lépjünk be abba a
könyvtárba,
ahol a file van. Majd egyszerűen csak a
file
nevével futtassuk az rpm -q -f parancsot,
és hagyjuk el a könyvtárakat!
- rpm -q -p <file neve>:
A lemezen lévő rpm fileról kérdezhetünk le
információkat akár fel van telepítve, akár
nem.
- rpm -q -g <csoport azonosító>:
A csomagoknak van egy csoport azonosítójuk
(mint a dokumentum elején láttuk), amik
alapján
könnyen csoportosíthatók a csomagok. Ha
beírunk
egy csoportot, akkor kilistázza az öszzes,
a megadott csoportba tartozó csomagot.
- rpm -q --whatprovides <file neve>:
Az általános gyakorlat az az, hogy egy csomag
vagy valamit igényel a működéséhez, vagy
valamit szolgáltat más csomagok számára.
Ezzel az opcióval azt kérhetjük le, hogy
a megadott lemezen lévő filet melyik feltelepített
csomag szolgáltatja. Gyakorlatilag ugyanaz
mint a -f opció (rpm -q -f <file neve>)
- rpm -q --whatrequires <csomag neve>:
Itt azt kérdezhetjük le, hogy mely feltelepített
csomagok működéséhez szükséges a megadott
csomag.
- rpm -q -i <csomag neve>:
E opcióval a dokumentum elején lévő általános
információt kaphatunk a csomagról. Értelem
szerűen ha egy rpm fileról szeretnénk ugyanezt
megtudni, azt az 'rpm -q -p -i <file neve>
paranccsal tehetjük meg.
- rpm -q -l <csomag neve>:
a csomaghoz tartozó összes filet kilistázza.
- rpm -q -l -v <csomag neve>:
Plusz információt szolgáltat a csomagban
lévő fileokról (pl tulajdonosa, attribútuma..).
- rpm -q -c <csomag neve>:
kilistázza, hogy a csomaghoz mely konfigurációs
fileok tartoznak.
- rpm -q -d <csomag neve>:
kilistázza a csomaghoz tartozó összes dokumentumfilet.
- rpm -q -s <csomag neve>:
A csomaghoz tartozó fileok állapotát kérdezhetjük
le. És mik ezek az állapotok?
- normal: a file nem lett módosítva más csomagok
feltelepítése által.
- replaced: a file ki lett cserélve, mikor
más csomagot feltelepítettünk.
- not installed: a file nem lett feltelepítve,
mert mondjuk olyan opcióval telepítettük,
ami azt nem teszi fel
- net shared: a file egy megosztott meghajtón
van.
- rpm -q --provides <csomag neve>:
Azokat a fileokat, libraryket listázza
ki,
amit más csomagok/programok igényelhetnek.
- rpm -q --requires <csomag neve>:
Az előző ellentettje, azaz azokat a fileokat
listázza ki, amit igényel a működéséhez.
- rpm -q --dump <csomag neve>:
Az összes lehetséges információt kilistázza
a csomaghoz tartozó fileokról.
- rpm -q --scripts <csomag neve>:
Azokat a scripteket listázza ki, amit a
csomag
feltelepítése/letörlése után/előtt hajtana
végre.
- rpm -q --queryformat '<formátum>' <csomag
neve>:
Nos ez egy igen összetett parancs. A lényege
röviden annyi, hogy egy csomagból azt kézdezünk
le amit akarunk, és úgy iratjuk ki ahogy
akarjuk, vagyis ahogy a <formátum>-ban
meghatároztuk. A különböző külcsszavakat
%{kulcsszó} módon kell jelölni, és ha szavakt
írunk akkor azt is kiírja. Ennek működését
talán egy példán keresztül a legkönnyebb
megérteni:
rpm -q --queryformat '%{NAME}: %{FILENAMES}n'
adduser
adduser: /usr/bin/adduser
Látható, hogy a csomag nevét írja ki, utána
egy kettőspontot, majd a csomag fileját.
Itt a csomag csak egy filet tartalamzott,
de ha több filet tartalmaz, akkor bizony
hibás kimenetet kapunk ezt a következő
képpen
lehet kiküszöbölni:
rpm -q --queryformat '%{NAME}: %{FILENAMES}]n'
etcskel
etcskel: /etc/skel
/etc/skel/.xclients
...
Nos itt már kiírja az összes filet. De
most
vegyük azt a kerziót, amikor ki szeretnénk
írni az összes sor elejére a csomag nevét:
rpm -q --queryformat '%{=NAME}: %{FILENAMES}]n'
etcskel
Ezzel az opcióval már megjelenik a sor
elején
a csomag neve is.
A formátum végén szereplő n hatására minden
kiírandó tétel után a következő tétel új
sorban kezdődik. Ezek hiányában minden egy
sorba akarna írni (persze amíg kifér), így
eléggé áttekinthetetlen lenne az egész.
Hogy mely információk kérhetől le a csomagból,
mely kulcsszavak használhatók, azt az "rpm
--querytags" paranccsal kérhetjük le.
A következő opciók működése megegyezik a
rpm -i opcióival, így csak fesorolom azokat:
- rpm -q -vv
- rpm -q --root <path>
- rpm -q --dbpath <path>
- rpm -q --rcfile <path>
Vissza