如何在 .deb 文件中列出软件包?

CW *_* II 6 debian dpkg package-management

sudo dpkg --install some_stuff_all.deb
Run Code Online (Sandbox Code Playgroud)

安装文件中的软件包some_stuff_all.deb

sudo dpkg --remove some_stuff_all.deb
Run Code Online (Sandbox Code Playgroud)

显示消息:

dpkg: error: you must specify packages by their own names, not by quoting the names of the files they come in
...
Type dpkg-deb --help for help about manipulating *.deb files;
Run Code Online (Sandbox Code Playgroud)

然后这列出了各个文件:

dpkg-deb  --contents  some_stuff_all.deb
Run Code Online (Sandbox Code Playgroud)

如何列出.deb文件中的包?

Tho*_*ner 10

一个.deb文件中只有一个包。

如果一个包文件被命名example_1.234.deb,那么这个包就被命名为example. (至少通常是这样。理论上有人可以重命名文件。)

如果你想使用 dpkg 删除一个包,你必须使用

dpkg --remove example 并不是 dpkg --remove example_1.234.deb

因为您要删除已安装的包,而不是包文件。


cas*_*cas 10

要获取有关包文件的信息:

dpkg -I some_stuff_all.deb
Run Code Online (Sandbox Code Playgroud)

这将为您提供有关文件的所有可用信息,包括包:、版本:、依赖:、描述:等。

有关dpkg --help选项的摘要和man dpkg详细信息,请参见。请注意,这-I实际上是一个dpkg-deb选项,但是当您给它选项时会为您dpkg运行。见和太。dpkg-debdpkg-debdpkg-deb --helpman dpkg-deb


kos*_*kos 5

假设您的包名为foo.deb,您可以dpkg-deb -I foo.deb使用dpkg-deb以下-f选项提取包的实际名称(以及 输出中列出的所有其他字段):

dpkg-deb -f foo.deb Package
Run Code Online (Sandbox Code Playgroud)
  • -f foo.deb Package:Packagefoo.deb包中提取字段;
dpkg-deb -f foo.deb Package
Run Code Online (Sandbox Code Playgroud)

扩大这一点,你可以直接通过运行一个命令替换删除有问题的包dpkg-deb -f foo.deb Package一个内部dpkg -r命令:

sudo dpkg -r $(dpkg-deb -f foo.deb Package)
Run Code Online (Sandbox Code Playgroud)