此命令只能列出已安装软件包的内容,
dpkg -L PACKAGENAME
但是如何列出未安装包的内容,以预览/检查包?
答案1
dpkg -c
(或--contents
)列出 .deb 包文件的内容(它是 的前端dpkg-deb
)
dpkg -c package_file.deb
要直接使用包名称而不是包文件,您可以使用apt-file
。 (您可能需要apt-file
先安装该包。)
sudo apt-file update
apt-file list package_name
正如第一条评论所述,apt-file 列出了您已配置的 Apt 存储库中的软件包内容。无论是否安装了任何特定软件包,它都无关紧要。
答案2
使用--contents
而不是-L
:
dpkg --contents PACKAGENAME
以这种方式使用时,dpkg
它充当的前端dpkg-deb
,因此使用它man dpkg-deb
来查看所有选项。
您还可以使用档案浏览器来查看包内容。
答案3
dpkg --contents
将让你查看已卸载的软件包。如果你的系统上还没有 .deb 文件,请执行以下操作
apt-get --download-only install pkgname
该包将被下载/var/cache/apt/archives
但不会安装。
答案4
我拿了@baldoz 的 http 想法并将其推广到 Ubuntu 和 Debian,添加了一些内容sed
并将其包装在 bash 函数单行中:
function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]\+>//g' -e '/^$/d'; }
用法:
$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz
多行上有相同的功能:
function deb_list () {
curl -s $(lsb_release -si \
| sed -e 's Ubuntu https://packages.ubuntu.com ' \
-e 's Debian https://packages.debian.org '
)/$(lsb_release -sc)/all/$1/filelist \
| sed -n -e '/<pre>/,/<\/pre>/p' \
| sed -e 's/<[^>]\+>//g' -e '/^$/d';
}
解释:
- lsb_release -si 返回“Ubuntu”或“Debian”,将其替换为基本网址
https://packages.ubuntu.com
或https://packages.debian.org
- lsb_Release -sc 返回代号(例如“trusty”、“sid”等),使用它来构建完整的 URL:
https://packages.ubuntu.com/trusty/all/curl/filelist
- 使用 curl 获取该 URL,并通过三个 sed 命令传输 html。第一个命令仅捕获文件列表(
<pre>
和</pre>
标签之间的内容);第二个命令删除所有 html 标签;第三个命令删除所有空白行。
注意:它不搜索 PPA、备用 apt 源存储库,仅查询您正在运行的 debian/ubuntu 版本可用的官方软件包。