在 Debian 系列操作系统中,dpkg --search /bin/ls
给出:
coreutils: /bin/ls
Run Code Online (Sandbox Code Playgroud)
也就是说,该文件/bin/ls
属于名为coreutils的 Debian 软件包。(如果您对包含未安装文件的包感兴趣,请参阅此帖子)
Fedora 的等价物是什么?
我正在使用一个没有top
安装程序的最小 Debian 系统。我试图用 安装 top sudo apt-get install top
,但是top
不是包名。
这似乎top
是其他一些包的一部分。我怎样才能找出我应该安装哪个包来获取它?更一般地说,我如何找到包含程序的包?
我在NixOS上使用Nix 包管理器。假设我想安装一个提供文件的包。我如何找到提供此文件的包,类似于其他 GNU/Linux 发行版?libgtk-x11-2.0.so.0
目前我必须谷歌该文件并找出它可能属于哪个包并在 Nix 存储库中找到相应的包,但我想要一个更惯用的方法。
注意:这适用于 Centos 7。如果您正在寻找 Debian 的答案,请参阅此问题。这些答案不会在这里重复。
安装 centos 7 后,我无法访问手册页:
# man ls
-bash: man: command not found
Run Code Online (Sandbox Code Playgroud)
我尝试通过 yum 安装它
# yum install man-pages
... ok
Run Code Online (Sandbox Code Playgroud)
但是再次:
# man ls
-bash: man: command not found
Run Code Online (Sandbox Code Playgroud)
为什么?
在 的底部man pcregrep
,有一条消息:
SEE ALSO
pcrepattern(3), pcresyntax(3), pcretest(1).
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试查看时,man pcresyntax
我得到:
$ man pcresyntax
No manual entry for pcresyntax
$ man 3 pcresyntax
No entry for pcresyntax in section 3 of the manual
$ man -k pcre
pcre-config (1) - program to return PCRE configuration
pcregrep (1) - a grep with Perl-compatible regular expressions
pcre_table (5) - format of Postfix PCRE tables
pcretest (1) - a program for testing Perl-compatible regular expressions
Run Code Online (Sandbox Code Playgroud)
我试过yum info pcresyntax
,甚至 …
说,我得到了一个像libasound.so.2
. 有没有办法查询包管理器以将文件名与其对应的包相关联?
我有兴趣获得任何包管理器的答案,但我的主要关注点是apt
和yum
。
可能的重复:
如何找出文件属于哪个(未安装)包?
希望是在裸 Debian 6.0.6 安装上安装 hd-idle。
对于安装,hd-idle 文档说明:
运行“dpkg-buildpackage -rfakeroot”
但是,尝试运行该命令会导致:
root@debian:/tmp/hd-idle# dpkg-buildpackage -rfakeroot
-bash: dpkg-buildpackage: command not found
Run Code Online (Sandbox Code Playgroud)
如何修复这个缺失的 dpkg-buildpackage?
给定二进制文件(或任何其他程序)的名称。如何找出哪个包提供了这个二进制文件?
注意:假设一个使用apt
/dpkg
进行包管理。
编辑
除了下面的正确答案之外,我想添加一些进一步的信息:在上面的问题中,我假设已安装相应的包。如果不是这种情况,则有一个名为的包apt-file
无论如何都可以完成这项工作。
mysqldump
可以通过以下方式搜索该工具
$ apt-file --regexp search .*mysqldump$
Run Code Online (Sandbox Code Playgroud)
导致:
mariadb-client-10.0: /usr/bin/mysqldump
mysql-client-5.5: /usr/bin/mysqldump
Run Code Online (Sandbox Code Playgroud)
如果command-not-found
安装了软件包并且用户尝试运行系统上不存在的命令,则会打印一条建议,其中包含提供可执行文件的软件包的名称。是否有具有相同功能但以可执行文件的名称作为参数的命令?
编辑:我已阅读如何找出文件属于哪个(未安装)Debian 软件包?但没有一个建议提供一个命令,给出明确的结果,如command-not-found
.
假设我想使用命令,例如。从项目中info2html
,它在我的系统上不可用。一些发行版有时会为一些预期的缺失命令(即被认为是通用的)建议包,但不是所有命令(也不是所有发行版)。
如何确定我的发行版中是否有所需程序的软件包,如果有,我需要安装哪个软件包?有没有,这样做的“正确方法”是什么?
欢迎提供一些具有特定发行版(如 Debian)的示例。:) 这可能取决于包管理软件。有用的术语也是受欢迎的,所以我可以在给定的包生态系统中找到这个功能。