我正在回答一个带有使用建议的问题rename
,但我意识到我不知道它来自哪个包(作为答案的一部分,我想说“如果你没有rename
,它会作为[包裹]”)。
man rename
告诉我SEE ALSO: mv(1), perl(1)
- 所以我的第一个想法是它是用 perl 安装的。
一个相关的答案, how to tell what was installed as part of a package , 帮助我弄清楚 perl 包包含prename
但不包含rename
- 结果我的/usr/bin/rename
指向/etc/alternatives/rename
which 指向/usr/bin/prename
所以这仍然有点令人困惑。/etc/alternatives/rename
在我安装 perl 之前是否指向其他地方?有没有一种通用的方法来判断某物来自哪个包?
phi*_*bim 33
安装apt文件
$ sudo apt-get install apt-file
Run Code Online (Sandbox Code Playgroud)
更新 apt 文件
$ sudo apt-file update
Run Code Online (Sandbox Code Playgroud)
搜索文件所属的包
$ apt-file search filename
Run Code Online (Sandbox Code Playgroud)
找到可执行文件的路径
$ whereis rename
rename: /usr/bin/rename.ul /usr/bin/rename /usr/bin/X11/rename.ul /usr/bin/X11/rename /usr/share/man/man1/rename.1.gz /usr/share/man/man2/rename.2.gz
Run Code Online (Sandbox Code Playgroud)
搜索包
$ apt-file search /usr/bin/rename
ladr4-apps: /usr/bin/renamer
util-linux: /usr/bin/rename.ul
Run Code Online (Sandbox Code Playgroud)
包名是: util-linux
Ter*_*ary 15
事实证明dpkg-query
,获取有关已安装软件包的信息是很好的,并且使用 -S [pattern] 选项将搜索具有与 [pattern] 对应的文件的软件包。
dpkg-query -S [filename-search-pattern]
Run Code Online (Sandbox Code Playgroud)
截至 2018 年
apt search filename
Run Code Online (Sandbox Code Playgroud)
适用于最近的 Ubuntu 和大多数基于 Debian 的发行版。
2018 年 5 月更新:显然不再使用 Ubuntu 18.04。
归档时间: |
|
查看次数: |
13236 次 |
最近记录: |