特定のライブラリに依存する RPM パッケージを一覧表示するにはどうすればよいでしょうか?

特定のライブラリに依存する RPM パッケージを一覧表示するにはどうすればよいでしょうか?

libLLVM-3.8.soFedora 25 システム上のどの RPM パッケージがライブラリとに依存しているかを確認したいと思います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

他のファイルについても同様です。または任意のファイル。

関連情報