如何在 OpenSuSE 中找到提供给定文件的包?

pet*_*erh 12 rpm opensuse zypper

我正在考虑一些类似Contents-<arch>.gzDebian 的问题。网络服务也还行。它存在吗?

简单阐述:例如,我们需要一个名为 的二进制文件exampletool,我们从其他发行版或操作系统中非常了解它。例如,我们想用 zypper 安装它。但是zypper只能安装一个包。为了找出我们可以在哪个包中找到所需的exampletool二进制文件,我们实际上需要进行搜索,最好是在当前未安装文件列表中进行快速索引搜索,但在存储库中可用的包。在 debian 上,包存储库中有一个名为 的索引文件Contents-amd64.gz,我们可以在其中使用单个zgrep命令找到所需的包。我也在为 OpenSUSE 寻找一些类似的单命令解决方案。如果没有,Web 服务也可以用于相同的功能。

Sai*_*ire 8

要从所有可用包中搜索以查找特定文件,您可以使用该选项wpse --provides --match-exact作为示例:

zypper se --provides --match-exact hg
Run Code Online (Sandbox Code Playgroud)

您将看到类似于以下内容的输出:

Loading repository data...
Reading installed packages...

S | Name      | Summary                  | Type   
--+-----------+--------------------------+--------
  | mercurial | Scalable Distributed SCM | package
Run Code Online (Sandbox Code Playgroud)

从那时起,您可以通过标准的 zypper install 安装软件包

zypper in mercurial
Run Code Online (Sandbox Code Playgroud)

应该注意的是,zypper wp它已经过时并且可能不再可用。


pet*_*erh 8

对于未来的谷歌人:在@SailorCire 的绝妙解决方案旁边:-),还有一个名为 的工具scout,它几乎可以搜索所有内容,我们可以像找到二进制文件一样找到 rpm-s给定 java 类的 jars。

例如,我们可以使用 scout 的bin命令找出提供hg可执行文件的包:

scout bin hg
Run Code Online (Sandbox Code Playgroud)

这次搜索的结果是mercurial包:

 repository      | package   | path     | binary
-----------------+-----------+----------+--------
 zypp (repo-oss) | mercurial | /usr/bin | hg    
Run Code Online (Sandbox Code Playgroud)