如何检查apt软件包安装了什么内容?

我刚刚通过apt安装了autojump软件包,现在我完全不知道如何实际使用它。较新版本使用一个别名j,但显然apt版本没有这个功能。
为了找出应该执行哪些二进制文件来使用autojump,有没有办法查看安装包中到底安装了什么?
4个回答

以下命令将列出由软件包autojump安装的所有文件:
dpkg -L autojump

这是一个 `dpkg` 命令,因为实际上 dpkg 负责安装软件包,apt 只是运行 dpkg 的前端界面。
为了完整起见,还有相反的命令:
dpkg -S file

这将为您提供所有包含名为file的内容的软件包(这也可以是路径的一部分)。

哇呜!我用了很久的apt-file,没想到我不知道这个。谢谢! - SirCharlo

当你刚用apt安装一个软件包时,下载的.deb文件仍然保存在/var/cache/apt/archives/目录下。
你可以用文件管理器打开这个文件,然后你就可以看到哪些文件和文件夹被添加到了系统中。可执行文件通常会保存在usr/bin/目录下。

安装 apt-file
sudo apt-get update && sudo apt-get install apt-file -y

这是使用方法
apt-file show packageName

1这对于未安装的软件包非常有用,但对于已安装的软件包则不必要。 - Philipp Wendler

一旦安装了一个软件包,它的存档文件会被本地保存在/var/cache/apt/archives/目录下。
要查看存储在那里的deb文件的内容,请使用以下命令:
dpkg -c /var/cache/apt/archives/package-name.deb

请注意,此方法仅适用于最近安装的软件包。
如果自安装该软件包以来已清空软件包缓存,则此方法在逻辑上将无法使用。
例如,在我的情况下,这是命令输出的toilet软件包的内容:
# dpkg -c /var/cache/apt/archives/toilet_0.2-1_i386.deb
drwxr-xr-x root/root         0 2010-05-12 18:21 ./
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/bin/
-rwxr-xr-x root/root     14096 2010-05-12 18:21 ./usr/bin/toilet
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/share/
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/share/man/
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/share/man/man1/
-rw-r--r-- root/root      1559 2010-05-12 18:21 ./usr/share/man/man1/toilet.1.gz
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/share/doc/
drwxr-xr-x root/root         0 2010-05-12 18:21 ./usr/share/doc/toilet/
-rw-r--r-- root/root       164 2010-02-08 20:03 ./usr/share/doc/toilet/README
-rw-r--r-- root/root       174 2010-02-08 20:03 ./usr/share/doc/toilet/TODO
-rw-r--r-- root/root       708 2006-11-15 22:11 ./usr/share/doc/toilet/copyright
-rw-r--r-- root/root      9601 2010-02-08 20:22 ./usr/share/doc/toilet/changelog.gz
-rw-r--r-- root/root       346 2010-02-08 19:50 ./usr/share/doc/toilet/NEWS.gz
-rw-r--r-- root/root       428 2010-02-08 20:34 ./usr/share/doc/toilet/changelog.Debian.gz
lrwxrwxrwx root/root         0 2010-05-12 18:21 ./usr/bin/figlet-toilet -> toilet
lrwxrwxrwx root/root         0 2010-05-12 18:21 ./usr/share/man/man1/figlet-toilet.1.gz -> toilet.1.gz

如果您希望从输出中排除目录,只需在命令的末尾添加| grep -v "^d"即可。
# dpkg -c /var/cache/apt/archives/toilet_0.2-1_i386.deb | grep -v "^d"
-rwxr-xr-x root/root     14096 2010-05-12 18:21 ./usr/bin/toilet
-rw-r--r-- root/root      1559 2010-05-12 18:21 ./usr/share/man/man1/toilet.1.gz
-rw-r--r-- root/root       164 2010-02-08 20:03 ./usr/share/doc/toilet/README
-rw-r--r-- root/root       174 2010-02-08 20:03 ./usr/share/doc/toilet/TODO
-rw-r--r-- root/root       708 2006-11-15 22:11 ./usr/share/doc/toilet/copyright
-rw-r--r-- root/root      9601 2010-02-08 20:22 ./usr/share/doc/toilet/changelog.gz
-rw-r--r-- root/root       346 2010-02-08 19:50 ./usr/share/doc/toilet/NEWS.gz
-rw-r--r-- root/root       428 2010-02-08 20:34 ./usr/share/doc/toilet/changelog.Debian.gz
lrwxrwxrwx root/root         0 2010-05-12 18:21 ./usr/bin/figlet-toilet -> toilet
lrwxrwxrwx root/root         0 2010-05-12 18:21 ./usr/share/man/man1/figlet-toilet.1.gz -> toilet.1.gz

apt的缓存只是一个缓存,谁能保证你会在缓存中找到你的软件包呢?你必须猜测。 - user827992
嗯,我假设楼主想在安装软件包后不久就找到这些信息。 - SirCharlo
我明白你的意思,但是我想指出一下,这个方法只适用于最近安装的软件包。顺便说一句,我已经给你点赞了,感谢你提供详细的答案。 - James McMahon
好的!如果你问我,那个负评有点太苛刻了。 - SirCharlo