如何判断可执行文件来自哪个包?
我正在回答一个问题,建议使用rename
,我意识到我不知道它来自哪个包(作为答案的一部分,我想像是“如果你没有rename
,它安装为[package]“的一部分。
man rename
告诉我也SEE ALSO: mv(1), perl(1)
– 所以我的第一个想法是它是用perl安装的。
一个相关的答案, 如何告诉我们安装什么作为一个包的一部分 ,帮助我弄清楚perl包包含prename
但不rename
– 事实certificate我的/usr/bin/rename
指向/etc/alternatives/rename
它指向/usr/bin/prename
所以这仍然令人困惑。 在我安装perl之前, /etc/alternatives/rename
指向其他地方? 是否有一般方法来判断哪些包来自哪个?
安装apt-file
$ sudo apt-get install apt-file
更新apt-file
$ sudo apt-file update
搜索文件所属的包
$ apt-file search filename
找到可执行的路径
$ 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
搜索包
$ apt-file search /usr/bin/rename ladr4-apps: /usr/bin/renamer util-linux: /usr/bin/rename.ul
包名是: util-linux
事实certificate, dpkg-query
可以获得有关已安装软件包的信息,并且使用-S [pattern]选项将搜索包含与[pattern]对应的文件的软件包。
dpkg-query -S [filename-search-pattern]
您可以尝试使用apt-file
(它不是默认安装的一部分)。
0)更新apt-file数据库
sudo apt-file update
1)查找二进制文件
$ which rename /usr/bin/rename
2)找到包裹
$ apt-file search /usr/bin/rename util-linux: /usr/bin/rename.ul
瞧 – 重命名是util-linux
一部分
截至2018年
apt search filename
适用于最近的Ubuntu和大多数基于Debian的发行版。
2018年5月更新:显然不再使用Ubuntu 18.04。