如何在Linux中列出包的内容
我们已经知道如何列出已安装的软件包以及如何列出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