如何列出 Debian 软件包中的文件而无需安装

如何列出 Debian 软件包中的文件而无需安装

此命令只能列出已安装软件包的内容,

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';
}

解释:

  1. lsb_release -si 返回“Ubuntu”或“Debian”,将其替换为基本网址https://packages.ubuntu.comhttps://packages.debian.org
  2. lsb_Release -sc 返回代号(例如“trusty”、“sid”等),使用它来构建完整的 URL:https://packages.ubuntu.com/trusty/all/curl/filelist
  3. 使用 curl 获取该 URL,并通过三个 sed 命令传输 html。第一个命令仅捕获文件列表(<pre></pre>标签之间的内容);第二个命令删除所有 html 标签;第三个命令删除所有空白行。

注意:它不搜索 PPA、备用 apt 源存储库,仅查询您正在运行的 debian/ubuntu 版本可用的官方软件包。

相关内容