如何获取存储库中已安装软件包的摘要并查看与全新安装的差异?

如何获取存储库中已安装软件包的摘要并查看与全新安装的差异?

我刚刚将几台 PC 升级到 Ubuntu Trusty 14.04。为此,我习惯从头开始安装所有内容以获得干净的系统,只保留 /home(和 /etc 供参考)。

但是这次我使用升级工具进行了升级,我想知道我的电脑与普通系统相比有什么不同。因为我从不同的来源安装了许多不同的软件包,并且可能在这里或那里编辑了一些文件。当然,我知道 apt 应该可以自动处理所有事情,但我是个偏执狂,我真的想确定一下。

基本上,我想要的是:

  1. 获取已安装的所有软件包的列表,以及每个软件包的来源存储库(如果可用)。这基本上是apt-cache policy针对每个包的,但总结在一个整洁的列表中。

  2. 对于来自“非官方来源”的软件包,指示是否有可从官方来源获得的版本(我指的是 /etc/apt/sources.list 中列出的 repo)。

    有时我安装了第三方的修补包,由于版本号冲突,这个包没有更新。我想要一个列表来告诉我是否有必要回退到官方版本。

  3. 文件系统中来自已安装软件包(包括配置文件)但之后已被修改的所有文件的列表

  4. 文件系统上所有不来自已安装软件包的文件列表(不包括 /home,可能还有 /etc)

基本上,我想知道升级后系统与全新安装后系统有何不同,并根据具体情况决定这些差异是否会导致不稳定。

答案1

我的问题已得到部分解答如何获取过时软件包的列表?

答案建议使用

apt-show-versions | grep 'No available version'   # Show all package not coming from repo
aptitude search '~o'                              # Similar

我想我们也可以这样做:

apt-show-versions | grep -v uptodate              # All packages that are not up-to-date

这将提供非最新的软件包,即可从启用的存储库升级的软件包,或不是来自此类存储库的软件包。

要获取此类软件包的所有可用版本的列表,我们可以执行以下操作:

apt-show-versions -a $(apt-show-versions | grep -v uptodate | sed -r 's/:.*//')

我还发现了一个引用deborphan -a(的问题如何列出 apt 中没有存储库支持的已安装软件包?

deborphan -a             # List all packages that have no reverse dependencies

总而言之,我对第 1 项和第 2 项有一些答案,但仍在寻找第 3 项和第 4 项:

  1. apt-show-versions是一个很好的答案
  2. 同上,上面的命令组合之一。这里的关键步骤当然是首先确保在 /etc/apt 中只启用了官方存储库。

相关内容