无需 dpkg 程序即可读取完整的 dpkg 数据库状态

cat*_*cat 4 package-management apt dpkg software-installation

从 Live USB,并且不使用已安装的 Ubuntu 程序,如dpkgdpkg-querydselectaptitudeapt-get、 或任何其他程序(因为它们都已损坏Illegal instruction),我如何读取软件包列表 apt,作为列表以便对已安装的软件包进行编目,稍后重新安装?

Reading package lists... Done
Building dependency tree
Reading state information... Done
Run Code Online (Sandbox Code Playgroud)

本地包数据库在哪里?几乎是一个完美的答案:

/var/lib/dpkg/status如果您更改软件包的状态,即安装它,删除它,将其标记为某些操作,则由 dpkg 修改,...

  • 我不想只列出“已更改”的包,还想列出依赖的包、系统的整个状态等。它包含在吗dpkg/status

    • 在另一个健康的系统上,该文件有大约 3800 个Package:条目;在目标系统上它有 3600 个Package:条目,而在 Live USB 上它只有 2000 个条目。听起来不错,但我担心它没有列出所有软件包。
  • 我不是在寻找下载的.deb缓存,也不是在寻找保存临时数据文件的cachefor dpkg/ apt- 这些不会提供完整的系统状态。

  • /var/lib/apt/lists似乎包含包源和包的列表,这几乎是完美的,除了从中获取包名称列表涉及大量解析之外。这是最好的选择吗?

该文件/var/cache/apt/pkgcache.bin存在,但由于它是生成的二进制文件,我认为将其复制到全新安装就足够了。

mur*_*uru 5

man dpkg

下面列出的其他文件位于其默认目录中,请参阅选项--admindir以了解如何更改这些文件的位置。

  • /var/lib/dpkg/available可用包的列表。

  • /var/lib/dpkg/status可用包的状态。

    此文件包含有关软件包是否标记为删除、是否已安装等信息。有关详细信息,请参阅有关软件包的信息部分。状态文件每天以/var/backups. 如果由于文件系统问题而丢失或损坏,它可能很有用。

你可以不再担心了。如果包裹不在 中statusdpkg则不知道。完全没有。


顺便说一句, apt 正在处理的“包列表”是不同的东西:这些是它从 等源下载的列表/etc/apt/sources.list,并且位于/var/lib/apt/lists. 这些包含有关存储库中的包的信息,与本地系统无关。


关于您当前的问题,您可以使用上面提到的选项,使用实时系统dpkg来读取该文件。--admindir