确定 apt-get install <package> 的目标安装位置?

对于一些应用程序来说,使用"which"命令可以相对容易地找到应用程序的安装位置。然而,像Tomcat这样的应用程序对我来说有点超出了我的能力范围。
我想要一种特定的方法,可以应用于任何apt-get install命令,以便找到二进制文件、库文件和支持文件的安装位置。
提出这个问题的原因是我安装了Tomcat7,但似乎无法找到它,而且我还有一系列的自定义操作要执行。

1请注意,我很快就找到了tomcat7的安装位置,方法是先安装apache2,然后访问默认页面@ localhost:8080,但该页面上显示的不仅仅是那些。通过文件夹浏览器中的“搜索:”选项在文件系统中进行搜索,发现了更多内容。 - Sn3akyP3t3
还有一些有用的信息:如何从命令行找到应用程序的路径? - Slothworks
4个回答

你可以运行命令dpkg -L package来列出包中的所有文件。例如,dpkg -L ubuntu-minimal只会列出与打包相关的几个小文件,因为它只是一个依赖于其他包的空元包。
dpkg -L tomcat7

可能是你想要的。

这正是我在寻找的东西!因为我一直忽略了,所以我得好好研究一下 man dpkg。 - Sn3akyP3t3
这对于一个不熟悉的Java库来说真是救命稻草!我甚至不知道要用locate查找哪个文件的名字...现在我可以更新我的类路径了。 - sage
你好朋友,你知道Fedora 29中的替代方案吗? - christianbueno.1
只有在已经安装的情况下才能正常工作?对吗?因为对我来说它不起作用。 - s1mmel

你可以使用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

我得在安装东西之前试试apt-file。谢谢! - Sn3akyP3t3

我通常做的是:
1. 启动 Synaptic(首先需要安装它) 2. 找到我感兴趣的软件包 3. 右键点击,选择属性 4. 查看已安装文件的列表

我看到很多回答都正确地说“dpkg -L”是列出已安装软件包内容的命令。但是,他们没有回答另一个问题,为什么某些软件包的“which”命令会显示为空?答案是:“which”命令只显示可执行文件的位置,而不是软件包的所有内容。如果一个软件包不包含任何可执行文件,那么“which”命令会显示为空。例如,openssl软件包提供了一个同名的可执行文件用于各种加密操作。而libssl-dev软件包只包含开发库,没有可执行文件。