¿Cómo enumerar paquetes RPM que dependen de una biblioteca específica?

¿Cómo enumerar paquetes RPM que dependen de una biblioteca específica?

Me gustaría determinar qué paquetes RPM en mi sistema Fedora 25 dependen de las bibliotecas libLLVM-3.8.soy libclang-3.8.so. ¿Cómo puedo?

Respuesta1

Puedes usar dnf repoquerypara encontrar esto. Por ejemplo:

dnf repoquery --whatrequires libLLVM-3.8.so

sin embargo, en un sistema x86_64, es posible que esto no haga exactamente lo que desea; para especificar la versión x86_64 de una biblioteca (que probablementeeslo que quieras), vira ()(64bit), así:

dnf repoquery --whatrequires 'libLLVM-3.8.so()(64bit)' 

( 'Ahora es necesario evitar que los paréntesis confundan a bash).

De forma predeterminada, esto enumera los paquetes disponibles e instalados; para restringir a los que están instalados actualmente, agregue la --installedbandera, así:

dnf repoquery --whatrequires 'libLLVM-3.8.so()(64bit)'  --installed

que en mi sistema, devuelve:

llvm-libs-0:3.8.0-1.fc25.x86_64
mesa-dri-drivers-0:13.0.2-2.fc25.x86_64
mesa-libxatracker-0:13.0.2-2.fc25.x86_64

Si solo desea nombres de paquetes, agregue --queryformat '%{name}\n'. (Úselo dnf repoquery --querytagspara obtener otras opciones de formato).

Respuesta2

$ locate libLLVM-3.8.so
/usr/lib/libLLVM-3.8.so
/usr/lib64/libLLVM-3.8.so
$ rpm -qf /usr/lib64/libLLVM-3.8.so
llvm-libs-3.8.0-1.fc25.x86_64
$ sudo rpm -e --test llvm-libs-3.8.0-1.fc25.x86_64
error: Failed dependencies:
        libLLVM-3.8.so()(64bit) is needed by (installed) clang-libs-3.8.0-2.fc25.x86_64
        libLLVM-3.8.so()(64bit) is needed by (installed) mesa-dri-drivers-13.0.2-2.fc25.x86_64
        libLLVM-3.8.so()(64bit) is needed by (installed) mesa-libOpenCL-13.0.2-2.fc25.x86_64
        libLLVM-3.8.so()(64bit) is needed by (installed) mesa-libxatracker-13.0.2-2.fc25.x86_64

Lo mismo ocurre con el otro archivo. O cualquier archivo.

información relacionada