获取已安装软件包列表 - 从损坏的分区

Mat*_*DMo 6 installation apt dpkg vmware

我在 OS X 之上的 VMWare Fusion 6 上运行 13.04,它有一些严重的稳定性问题,需要硬重启(电源循环)至少一次/天,如果不是更多的话。

由于 VMWare 很蹩脚,并不总是将磁盘数据写入磁盘,因此当有人在不关闭 VM 的情况下重新启动机器时,虚拟机很容易损坏。

无论如何,我从旧 VM 获得了一个虚拟磁盘,可以在新安装中挂载,但我不知道如何获取已安装软件包的列表,因为dpkg正在查看其新数据库并且没有关心旧的。

旧分区存在很多问题,文件已损坏等,因此我不能将dd其移至新位置。我认为最简单的方法是编译我在安装后添加的软件包列表,然后将其提供给dpkgapt-get就像在这个答案中一样。我唯一的问题是生成该包列表。任何人都可以帮忙吗?

小智 8

如果您可以挂载足够多的虚拟磁盘以查看/var/lib/dpkg/目录,您可以告诉dpkg使用“--admindir”选项查看那里。

dpkg --admindir=/mountpoint/var/lib/dpkg --list
Run Code Online (Sandbox Code Playgroud)

真正需要的唯一文件是/var/lib/dpkg/status(或其备份之一)。因此,您可以将该单个文件复制到一个空目录并将dpkg指向该目录。