如何从包中获取已安装文件的列表?

Anu*_*pta 506 package-management dpkg

当我使用包管理器在 Ubuntu 上安装它时,我想知道在哪里可以找到我安装的应用程序。

我安装了 RabbitMQ 并运行locate rabbitmq,结果如下:

/home/anupamg/.m2/repository/com/rabbitmq
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/_maven.repositories
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.jar
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.jar.lastUpdated
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.jar.sha1
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.pom
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.pom.lastUpdated
/home/anupamg/.m2/repository/com/rabbitmq/amqp-client/1.7.2/amqp-client-1.7.2.pom.sha1
/home/anupamg/Downloads/rabbitmq-server-generic-unix-2.4.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

小智 755

要查看软件包安装到系统上的所有文件,请执行以下操作:

dpkg-query -L <package_name>
Run Code Online (Sandbox Code Playgroud)

要查看将安装 .deb 文件的文件

dpkg-deb -c <package_name.deb>
Run Code Online (Sandbox Code Playgroud)

要查看未安装的软件包中包含的文件,请执行此操作一次(如果您尚未安装apt-file

sudo apt-get install apt-file
sudo apt-file update
Run Code Online (Sandbox Code Playgroud)

然后

apt-file list <package_name>
Run Code Online (Sandbox Code Playgroud)

这个问题了解更多

  • 更新 `apt-file` 很痛苦。 (5认同)
  • 正如 gazhay 上面评论的那样,`dpkg-query -c foo.deb` 失败了。但是`dpkg-deb -c foo.deb` 有效。 (3认同)
  • 请注意,`dpkg -L` 不考虑可能已被`--path-exclude=` 排除的文件。即使它们没有安装,它也会列出它们。 (2认同)

sar*_*old 36

@drysdamdpkg -L <package_name>可能是解决您当前问题的最佳选择,但您可能想阅读Filesystem Hierarchy Standard,它描述了文件系统中不同类型的文件所在的位置。

不是确定的;它只是对事物“主要”方式的描述性说明。

更具体的 Ubuntu 是Ubuntu 服务器指南,它将足够详细地描述所有内容。(许多其他指南掩盖了太多细节,但这应该更好。)


don*_*ght 22

如果你只想要一个安装的包,你可以找到包名

$ apt-cache search rabbitmq
...
librabbitmq-dev
...
Run Code Online (Sandbox Code Playgroud)

然后使用 dpkg --listfiles

$ dpkg --listfiles librabbitmq-dev
/usr/lib/x86-64/librabbit... 
. . . 
Run Code Online (Sandbox Code Playgroud)

  • `dpkg -L` 仅适用于已安装的软件包。 (2认同)

Rar*_*tas 17

@Gilles 给出的答案非常有用(实际上,随着时间的推移,答案得到了改进)。

此外,对于不想安装任何辅助包(如apt-file)的人,我有一个提示:

  • 转到http://packages.ubuntu.com/
  • 转到搜索包目录会话;
  • 在“关键字”字段中插入您的包名称并选择“仅显示完全匹配”
  • 选择您的发行版并单击“搜索”按钮。
  • 在下一个屏幕中选择所需的包;
  • 在页面末尾,单击架构名称旁边的文件列表链接;
  • 下一页将显示您的包的文件列表。

例如:http : //packages.ubuntu.com/trusty/amd64/multipath-tools/filelist

  • `curl -s https://packages.ubuntu.com/$(lsb_release -cs)/$(dpkg --print-architecture)/&lt;&lt;包名&gt;&gt;/filelist | sed '1,/pfilelist/d;/&lt;\/div&gt;/,$d'` :-) (4认同)