从 Live USB,并且不使用已安装的 Ubuntu 程序,如、、、、或dpkg
任何其他程序(因为它们都是dpkg-query
dselect
aptitude
apt-get
破碎的Illegal instruction
), 我该如何读取软件包列表 apt
,以便对已安装的软件包进行分类,以便稍后重新安装?
Reading package lists... Done
Building dependency tree
Reading state information... Done
本地包数据库在哪里?几乎是一个完美的答案:
/var/lib/dpkg/status
如果您更改包的状态,则会被 dpkg 修改,即安装、删除、标记某些操作等……
我不想只列出“更改的”包,还想列出依赖的包、整个系统的状态等等。这些包含在内吗
dpkg/status
?- 在另一个健康的系统上,该文件有 ~3800 个
Package:
条目;在目标系统上它有 3600 个Package:
条目,而在 Live USB 上它只有 2000 个条目。这听起来是对的,但我担心它没有列出全部包裹。
- 在另一个健康的系统上,该文件有 ~3800 个
我不是在寻找下载的
.deb
缓存,也不是cache
在寻找保存临时数据文件的dpkg
/apt
——这些都没有提供完整的系统状态。/var/lib/apt/lists
似乎包含软件包源和软件包的列表,这几乎是完美的,只是从中获取软件包名称列表需要进行大量解析。这是最好的选择吗?
文件/var/cache/apt/pkgcache.bin
存在,但由于它是一个生成的二进制文件,我认为将其复制到全新安装是不够的。
答案1
看man dpkg
:
下面列出的其他文件位于其默认目录中,请参阅选项
--admindir
以了解如何更改这些文件的位置。
/var/lib/dpkg/available
可用包的列表。
/var/lib/dpkg/status
可用包的状态。此文件包含有关软件包是否标记为删除、是否已安装等信息。有关详细信息,请参阅“软件包信息”一节。状态文件每天在 中备份
/var/backups
。如果由于文件系统问题而丢失或损坏,它会很有用。
您无需担心。如果包裹没到status
,dpkg
我们就不知道。完全不知道。
顺便说一句,apt 所说的“软件包列表”是另一回事:这些是从 等处的源下载的列表/etc/apt/sources.list
,位于 中/var/lib/apt/lists
。它们包含有关存储库中软件包的信息,与本地系统无关。
关于您当前的问题,您可以使用实时系统来dpkg
读取该文件,使用--admindir
上面提到的选项。