![]() |
![]() |
![]() |
|||||||||||||
|
|||||||||||||||
![]() |
![]() |
![]() |
Et af de oftest stillede spørgsmål i forbindelse med Red Hat Linux er: Hvilken rpm-pakke indeholder filen XYZ?
På SSLUG's mailingliste har mange givet gode råd til svar på dette
spørgsmål.
Denne løsning fremkom fra Hernik Størner, Ole Vilmann og Ole Tange en gang 1998.
Løsningen kræver et perl-script og et shell-script. Begge er ganske simple.
#!/usr/bin/perl # # doit # while($rpm = <>) { chomp $rpm; @files=`rpm -qpl $rpm`; print map { $rpm ," ", $_ } @files; }
#!/bin/sh # # findrpm # if [ $# != 2 ] then echo Usage: findrpm file-to-find /path/to/rpms else find ${2}/*.rpm | /usr/local/bin/doit | grep -i $1 2>/dev/null fi
Begge scripts kan f.eks. placeres i /usr/local/bin. Begge scripts skal selvfølgelig også være eksekverbare:
# chmod +x /usr/local/bin/doit /usr/local/bin/findrpm #
Herefter er det muligt at finde ud af hvilken rpm-pakke, der indeholder libgpm.so:
[vilmann@supernaut ~]$ findrpm libgpm.so /cdrom/RedHat/RPMS/ /cdrom/RedHat/RPMS//gpm-1.13-8.i386.rpm /usr/lib/libgpm.so.1.13 /cdrom/RedHat/RPMS//gpm-devel-1.13-8.i386.rpm /usr/lib/libgpm.so [vilmann@supernaut ~]$
En ulempe ved denne metode er, at en søgning efter make også vil give alle rpm-pakker med indhold WindowMaker, men det skulle være til at klare med grep:
# findrpm make /cdrom/RedHat/RPMS/ | grep -v WindowMaker
Happy rpm-hunting!
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |