有什么方法可以在本地安装的包和更新的包之间获取源差异?这将有助于准确检查哪些部件已被修复、更改或添加。
例如,假设您的系统上安装了 linux-libc-dev 软件包,并且
sudo apt-get update && sudo apt-get upgrade
节目
The following packages will be upgraded:
linux-libc-dev
但是您想在升级之前检查与同一软件包的本地版本相比所做的确切更改。
我们该怎么做?
有什么方法可以在本地安装的包和更新的包之间获取源差异?这将有助于准确检查哪些部件已被修复、更改或添加。
例如,假设您的系统上安装了 linux-libc-dev 软件包,并且
sudo apt-get update && sudo apt-get upgrade
节目
The following packages will be upgraded:
linux-libc-dev
但是您想在升级之前检查与同一软件包的本地版本相比所做的确切更改。
我们该怎么做?
Afaik 做到这一点的唯一方法是获取源代码并使差异成为您自己。您可以使用 apt-get 获取用于编译软件包的实际源代码。外汇:
这将以标准补丁格式打印出所有文件之间的所有差异。
这是我一起破解的另一个解决方案:whatchanged。
它将您感兴趣的二进制包的名称作为唯一参数。以最近的 SRU 为例:
这就是它的作用:
debdiff
标准输出进行比较并输出(您可能希望重定向以便于阅读)它可能需要更好地处理某些在源检索过程中可能出错的事情,流控制可能有点偏离,并且必须有更优雅的版本检查方式,但它在我有限的测试中运行良好。现在,认为它是一种有效的快速破解方法,并且非常欢迎改进。如果它对少数人有用,我会将它推送到 bzr 存储库和/或创建一个 Launchpad 项目。
编辑:我没有让它在 pastebin 上腐烂,而是为它启动了一个 Launchpad 项目;您可以使用
bzr branch lp:whatchanged
. 随意报告错误、分支、用 Perl 重写等。这是一种(可能不是最佳的)UDD方法:
为您的版本(假设为 Lucid)拉取更新分支(假设如下)应包含最新的 SRU:
获取最新版本引入的更改,(假设如下)应对应于最新的 SRU:
如果您想查看包档案中的文件差异,请提取它们的 md5sums 文件,对它们进行排序和比较,然后您可以缩小实际文件的列表以进行显着比较。
可能不是“确切”更改,但
apt-listchanges
列出了自安装版本以来所做更改的更改日志条目。它的工作原理是在您完成下载新软件包之后但在安装开始之前添加一个步骤,它会向您显示每个即将升级的软件包的更改日志条目。然后,您可以继续或取消。你可以安装它
然后设置它