Как составить список RPM-пакетов, зависящих от определенной библиотеки?

Как составить список RPM-пакетов, зависящих от определенной библиотеки?

Я хотел бы определить, какие пакеты RPM в моей системе Fedora 25 зависят от библиотек libLLVM-3.8.soи libclang-3.8.so. Как мне это сделать?

решение1

Вы можете использовать dnf repoquery, чтобы найти это. Например:

dnf repoquery --whatrequires libLLVM-3.8.so

Однако в системе x86_64 это может не дать вам того, что нужно; указать версию библиотеки x86_64 (которая, вероятно,являетсячто хотите), прикрепите ()(64bit), вот так:

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

( 'Сейчас это необходимо, чтобы скобки не сбивали с толку bash.)

По умолчанию здесь перечислены как доступные, так и установленные пакеты; чтобы ограничиться только теми, которые установлены в данный момент, добавьте флаг --installed, например:

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

что в моей системе возвращает:

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

Если вам нужны только имена пакетов, добавьте --queryformat '%{name}\n'. (Используйте dnf repoquery --querytagsдля получения других параметров форматирования.)

решение2

$ 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

Аналогично для другого файла. Или любого файла.

Связанный контент