如何在Linux中列出包的内容

时间:2020-03-21 11:44:44  来源:igfitidea点击:

我们已经知道如何列出已安装的软件包以及如何列出Linux中包的依赖项。

今天,我们将看到如何在Linux中列出包的内容。
包装是否安装并不重要。
可以读取已安装或者未安装包的内容。

在Linux和Unix中,大多数程序通常不会在一个目录中结束。
安装程序包时,该包中的所有文件都会通过文件系统分散并保存在不同的路径中。
通常,可执行文件(例如,二进制文件/脚本)存储在"/bin"或者'/usr/bin'或者'/usr/local/bin'目录中,库文件('/usr/lib')中,配置文件'/etc','/usr/share'中的静态数据,等等。
现在让我们在包中找到文件中的文件列表以及它们实际存储在Linux中的位置。

列出Linux中包的内容

首先,我们将看到如何在基于Deb的系统中读取包的内容,例如Ubuntu。

列出Ubuntu中已安装包的内容

我已经在Ubuntu 20.04桌面上安装了Microsoft团队包。

要查看Microsoft团队包的内容,请务必运行:

$dpkg -L teams

示例输出:

/.
/usr
/usr/bin
/usr/bin/teams
/usr/share
/usr/share/applications
/usr/share/applications/teams.desktop
/usr/share/pixmaps
/usr/share/pixmaps/teams.png
/usr/share/teams
.
.
.
/usr/share/teams/swiftshader/libEGL.so
/usr/share/teams/swiftshader/libGLESv2.so
/usr/share/teams/teams
/usr/share/teams/v8_context_snapshot.bin

看到了吗?
上面的输出显示了团队包装安装的文件及其在Ubuntu系统中的位置。

以下是查看Ubuntu中已安装包内容的另一种方法:

$dpkg-query -L teams

列出Ubuntu中未安装的包的内容

就像我已经说过,上面的命令显示已安装包的内容。
如果未安装包且我们想要阅读其内容,该怎么办?
也是可能的!即使在安装之前,我们也可以找到包装的文件。

首先下载.deb文件。
我已经下载了Teams应用程序.deb文件。
转到我们下载.deb文件的位置并运行以下命令以查看其内容:

$dpkg --contents teams_1.2.00.32451_amd64.deb

或者,

$dpkg -c teams_1.2.00.32451_amd64.deb

示例输出:

drwxr-xr-x root/root         0 2019-11-20 20:55 ./
drwxr-xr-x root/root         0 2019-11-20 20:54 ./usr/
drwxr-xr-x root/root         0 2019-11-20 20:54 ./usr/bin/
-rwxr-xr-x root/root       286 2019-11-20 20:54 ./usr/bin/teams
drwxr-xr-x root/root         0 2019-11-20 20:54 ./usr/share/
drwxr-xr-x root/root         0 2019-11-20 20:54 ./usr/share/applications/
-rw-r--r-- root/root       352 2019-11-20 20:54 ./usr/share/applications/teams.desktop
.
.
.
-rwxr-xr-x root/root    286264 2019-11-20 20:54 ./usr/share/teams/swiftshader/libEGL.so
-rwxr-xr-x root/root   2677296 2019-11-20 20:54 ./usr/share/teams/swiftshader/libGLESv2.so
-rwxr-xr-x root/root 114944384 2019-11-20 20:54 ./usr/share/teams/teams
-rw-r--r-- root/root   1040824 2019-11-20 20:54 ./usr/share/teams/v8_context_snapshot.bin

或者,我们也可以使用APT文件工具执行此操作。

安装apt-file,如下所示,如果未安装它已显示:

$sudo apt install apt-file

如果我们刚刚安装了APT文件,则系统范围的缓存可能为空。
我们需要以root身份运行"APT-File Update"以更新缓存。
我们还可以将"APT-File Update"作为普通用户运行,以在用户的主目录中使用缓存。

让我们使用命令更新数据库缓存:

$sudo apt-file update

现在列出已安装包的内容,例如Vim,如下所示:

$apt-file list vim

示例输出:

vim: /usr/bin/vim.basic 
vim: /usr/share/bug/vim/presubj
vim: /usr/share/bug/vim/script
vim: /usr/share/doc/vim/NEWS.Debian.gz
vim: /usr/share/doc/vim/changelog.Debian.gz
vim: /usr/share/doc/vim/copyright
vim: /usr/share/lintian/overrides/vim

APT-File工具还用于搜索提供特定文件的包。
例如,查找使用命令提供alisp.h文件的包:

$apt-file find alisp.h

或者,

$apt-file search alisp.h

示例输出:

libasound2-dev: /usr/include/alsa/alisp.h

如我们所见,"libasound2-dev"软件包提供了Alisp.h文件。

有关详细信息,请参阅以下链接。

  • 如何查找在Linux中提供特定文件的包

这些是在基于Deb的系统中查看包内容的几种方法。
现在让我们看看如何在基于RPM的系统中列出包内容,例如CentOS。

列出CentOS中已安装/未安装包的内容

在基于RPM的系统中,如CentOS,我们可以使用"repoquery"命令找到包的内容。

"yum-utils"包提供了repoquery命令,因此让我们使用命令安装它:

$sudo yum install yum-utils

现在让我们了解使用命令的"nano"编辑器包的内容:

# repoquery --installed --list nano

或者,

# repoquery --list nano

或者,

# repoquery -l nano

示例输出:

Last metadata expiration check: 0:03:02 ago on Tuesday 16 June 2017 06:01:46 PM IST.
/etc/nanorc
/usr/bin/nano
/usr/bin/rnano
/usr/lib/.build-id
/usr/lib/.build-id/d3
.
.
.
/usr/share/nano/tcl.nanorc
/usr/share/nano/tex.nanorc
/usr/share/nano/texinfo.nanorc
/usr/share/nano/xml.nanorc

相同的方式列出未安装文件的内容。
转到我们下载RPM文件的位置并查看其内容如下:

# repoquery --list nano-2.9.8-1.el8.x86_64.rpm