Kitől származnak a csomagjaim?

Órák kérdése, és megjelenik a Fedora 10. Már nagyban készülök az eseményre és a telepítésre. Szeretném ezt minél gyorsabban letudni. Elhatároztam ezért, hogy már telepítés közben elérhetővé teszem az RPM Fusion tárolót, hogy feltelepítsem az összes szükséges programot a rendszerrel együtt.
No de milyen programokat telepítettem az RPM Fusionből? Mivel egészen biztosan nem fogok emlékezni arra, hogy miket kell kiválasztanom, így készítettem egy emlékeztető listát a csomagokról.

Ehhez az rpm parancsot használtam. A -qa kapcsolóval kérhetünk listát az összes csomagról. Ha egy programról akarunk információt, akkor adjuk meg annak nevét.

[oleg@localhost ~]$ rpm -qa k3b
k3b-1.0.5-3.fc9.i386
[oleg@localhost ~]$ 

Ha nem tudjunk pontosan a nevét, vagy több hasonló nevű programot is keresünk, akkor használhatunk joker karaktereket is.

[oleg@localhost ~]$ rpm -qa k3b\*
k3b-extras-freeworld-1.0.5-4.fc9.i386
k3b-1.0.5-3.fc9.i386
[oleg@localhost ~]$

Viszont az igazán hasznos kapcsolója esetemben az rpm programnak, a --queryformat vagy rövidebb formában: --qf. Ezzel a csomagról nyilvántartott információkat írathatunk ki. Használhatunk un. mezőneveket, melyek megadják, hogy mely információk jelenjenek meg a csomagról. Ezen mezőnevek listáját megkaphatjuk a

rpm -a --querytags

paranccsal. Ezek közül nekem most a név és a szállító neve lesz az érdekes. Persze még számos mást is megadhatunk. Ezeket a neveket az alábbi formátumban kell megadni ha többet is használunk:

[oleg@localhost ~]$rpm -qa k3b --qf '%{NAME} %{VERSION} %{VENDOR}\n'
k3b 1.0.5 Fedora Project
[oleg@localhost ~]$

Így már megtudtam, hogy kitől származik a k3b program, méghozzá a Fedora Project készítette.
Ezzel már egy lépéssel közelebb kerültünk a megoldáshoz. Ezután kilistáztam az összes szállító (vendor) nevét, ami előfordul a rendszerben. Érdemes ezt sort paranccsal kombinálni, hogy ABC szerint sorba rendezve könnyebb legyen átnézni. Illetve text fájlba is küldhetjük az eredményt:

rpm -qa --qf '%{VENDOR}\n' | sort > allvendor

Ezzel kaptam a home könyvtáramban egy allvendor text fájt, benne az összes szállító nevével. Kiderült belőle, hogy összesen 6 szállítót neveznek meg a csomagjaim:

  1. Fedora Project
  2. (none)
  3. Opera Software ASA
  4. Red Hat, Inc.
  5. RPM Fusion
  6. rpm.livna.org

Így már egyszerű dolgom van. A grep szűrőt használva felsoroltatom vele, hogy mely csomagok származnak az RPM Fusionből! Persze itt is használható a sort parancs és el is menthetjük text fájlba küldéssel. Én így használtam:

rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep 'RPM Fusion' | sort > vendor-fusion

Ezzel kaptam egy text fájlt vendor-fusion névvel, benne felsorolva az összes csomag, melyeket az RPM Fusion szállított. Így már lesz emlékeztetőm, hogy miket kell majd telepíteni onnan. Mindehhez a művelethez nincs szükség root jogra, mert az rpm adatbázis a nélkül is olvasható.

Hozzászólások

Egy hibára szeretném felhívni a figyelmed. Írtad:

rpm -qa k3b*

Erre vigyázz, mert ez így shell globbing. Itt nem a shellnek kell helyettesítenie az aktuális könyvtárból a k3b kezdetű fileneveket paraméterként, hanem a *-ot literálisként kell átadni az rpm-nek, ezzel elérve, hogy az rpm értelmezze azt, s az adatbázisra vonatkozóan tekintse bármire illeszkedésnek. Csak azért működött, mert az aktuális könyvtárban nem volt illeszkedés, így a shell literálisként adta át a csillagot. Így már nem működne:

: >k3b-ilyen-nincs
rpm -qa k3b*

Ekkor valójában ez történik:

rpm -qa k3b-ilyen-nincs

Tehát a helyes megoldás:

rpm -qa k3b\*

Köszi az észrevételt! Javítottam. :)

Ez itt egy link. Mármint az előző hozzászólásom. :)