我正在回答一个带有使用建议的问题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/renamewhich 指向/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 次 |
| 最近记录: |