对于某些应用程序,使用“which”命令可以很容易地找到应用程序的安装位置。但是,有些应用程序(例如 Tomcat)有点超出我的定位能力。
我要求可以应用于任何 apt-get install 的特定方法来定位二进制文件、库和支持文件的安装位置。
出现这个问题的原因是我安装了 Tomcat7,但似乎找不到它,而且我有一个要执行的自定义列表。
答案1
您可以运行该命令dpkg -L package
列出软件包中的所有文件。例如,dpkg -L ubuntu-minimal
只会列出几个与打包相关的小文件,因为它只是一个依赖于其他软件包的空元包。
dpkg -L tomcat7
可能就是你想要的。
答案2
您可以使用以下命令列出已安装软件包的内容dpkg
命令,这是 APT 工具内部调用的低级包操作命令:
dpkg -L tomcat7
您可能希望在输出中搜索;使用grep
命令。例如,要查看配置文件(位于 下/etc
):
dpkg -L tomcat7 | grep /etc
您要修改的文件可能位于主tomcat7
软件包的依赖项中。在软件包及其依赖项中搜索会更加复杂。您正在寻找的文件可能位于某个名为 的软件包中tomcat7-something
。显示它们的最简单方法是使用apt-file
命令,默认情况下不会安装该命令(使用 进行安装apt-get install apt-file
)。
apt-file list tomcat7
apt-file
列出 Ubuntu 中所有软件包的文件名(根据您启用的软件包源),无论它们是否已安装。您还可以使用它来搜索文件:
$ apt-file search RequestInfoExample.java
tomcat7-examples: /usr/share/tomcat7-examples/examples/WEB-INF/classes/RequestInfoExample.java
答案3
我通常会这样做:
启动 Synaptic(您需要先安装它)
找到我感兴趣的包
右键单击,选择属性
查看已安装文件列表
答案4
我看到很多回复都正确地指出“dpkg -L”是列出已安装软件包内容的命令。但是,他们都没有回答另一个问题,为什么“which”命令会列出某些软件包的空内容?答案是:“which”仅显示可执行文件的位置,而不是软件包的所有内容。如果软件包不包含任何可执行文件,则“which”显示为空。例如,openssl 软件包为各种加密操作提供了同名的可执行文件。而 libssl-dev 软件包包含开发库,而不是任何可执行文件。