2012-08-29 18 views

risposta

1

Diciamo che si desidera sapere chi dipende libpng14

In tcsh:

zypper search -i | cut -d \| -f 2 | tr -s '\n' ' ' > z.txt 
foreach i (`cat z.txt`) 
    zypper info --requires $i |grep libpng14 &&echo $i 
end 

E in un istante, si inizierà ottenere risultati come:

libpng14.so.14()(64bit) 
libpng14.so.14(PNG14_0)(64bit) 
DirectFB 
libpng14.so.14()(64bit) 
libpng14.so.14(PNG14_0)(64bit) 
MPlayer 

È necessario per separare i pacchetti dai messaggi di grep, comunque.

+2

(usa il modificatore -q del comando 'grep' su non echo risultati) – mveroone

1

Se è già installato, è possibile utilizzare --whatrequires rpm:

--whatrequires CAPABILITY 
     Query all packages that require CAPABILITY for proper functioning. 
     Note that this does not return what requires a given package. 

In caso contrario, si [ci] 're fuori di fortuna per ora.

+1

Grazie - ma rpm non sembra funzionare correttamente. Secondo rpm, nulla nel sistema è richiesto da qualcos'altro. Quindi, rpm può disinstallare tutto da solo :( – user626201

-1

Questo funziona:

rpm -e --test PKGNAME 

Fonte: man rpm

12

Puoi effettuare la ricerca (abbreviato con "se") per i pacchetti che richiedono un certo pacchetto con:

zypper se --requires packagename

Inoltre, è possibile cercare solo tra i pacchetti installati con:

zypper se -i --requires packagename

Ad esempio, per cercare i pacchetti che necessitano di libpng:

# zypper se -i --requires libpng 
Loading repository data... 
Reading installed packages... 
S | Name      | Summary                | Type 
--+-----------------------------+---------------------------------------------------------------------+-------- 
i | DirectFB     | Graphics Library for Framebuffer Devices       | package 
i | MPlayer      | Multimedia Player             | package 
i | cairo-devel     | Development environment for cairo         | package 
etc.