我在哪里可以了解有关软件包补丁的详细信息和原因?

我正在尝试构建一个软件包,但在构建过程中遇到了问题。在12.04.1(Precise)安装的doxygen 1.7.4-3补丁中,有一个或多个补丁导致doxygen无法对我的Tcl文件运行过滤脚本,如果文件的扩展名是.tcl(Tcl文件的正常扩展名)。如果扩展名是其他扩展名,比如.src,过滤脚本会按预期运行。我使用.tcl作为显式源代码的库文件或辅助文件的扩展名,而使用.src作为不是主要程序的“主”程序的扩展名。(是的,在Doxyfiles中,我有正确的文件名模式等设置——我的整个软件包在CentOS 5和CentOS 6下都能成功构建,并且在CentOS 5下,我甚至使用了我自己构建的doxygen 1.7.4 RPM(基本上是未打补丁的版本)。当我在Ubuntu 12.04.1下手动构建没有Ubuntu/Debian补丁的doxygen时,它也可以正常工作。但是已安装的版本却不能正常工作。我认为其中一个或多个补丁破坏了doxygen的某些功能。变更日志并没有提供太多信息。

明天我将创建一个简单的软件包来说明这个问题。

2个回答

首先,doxygen的精确默认版本是1.7.6.1-2ubuntu1,如Ubuntu packages所述,所以我不确定为什么你提到了1.7.4-3,因为那是11.10 Oneiric default version。我应该检查一下你是否真的在使用Precise版本,或者是否已经正确升级。
你正在使用的版本仍然应用了doxygen_direct_dot_run.diff补丁,而实际的Precise版本(1.7.6.1-2ubuntu1)没有应用该补丁。因此,使用真正的Precise版本可能会解决一些问题,因为它还有其他补丁。在Launchpad上没有描述你问题的当前错误,所以可能是一个新问题。
更一般地说,补丁和变更日志。
当您下载源代码(apt-get source doxygen)时,您可以看到应用了哪些补丁(对于Precise中的doxygen)。
dpkg-source: info: applying manpages.diff
dpkg-source: info: applying dot-config.diff
dpkg-source: info: applying gcc-g.diff
dpkg-source: info: applying doxygen-jquery.patch

然而,您也可以下载程序的源代码,而不应用补丁或解压包。
apt-get source doxygen --download-only

(如果你想的话,可以构建软件包并省略一些补丁。)
如果你使用了--download-only开关来执行apt-get source命令,你将会得到两个软件包和一个签名文件。你可以解压doxygen_1.7.6.1-2ubuntu1.debian.tar.gz来查看补丁、变更日志和规则(并不是patches文件夹中的所有补丁都会被使用)。
变更日志中会包含对补丁的引用,并且始终会包括Debian(#number)或Launchpad(LP: #number)的错误编号,你可以在相应的错误跟踪器上搜索这些编号。这是查找有关补丁更多信息的最佳方法,而不仅仅是在非常简短的变更日志中。
以下是来自doxygen源代码变更日志的示例:

不要应用doxygen_direct_dot_run.diff。关闭:#618125。

现在#618125是Debian的错误编号,所以你可以在debian上按编号搜索错误并找到更多详细信息。

添加多架构元数据以满足交叉依赖关系(LP: #971739)

同样地,要获取更多信息,您可以在Launchpad上搜索此错误编号。
更一般地说,您也可以访问patches.ubuntu.com
这些补丁每天生成一次,包含了Ubuntu源代码包与Debian相同版本源代码包之间的差异。
除了在错误线程本身、论坛或IRC频道上进行讨论外,这些调查途径是您能够了解补丁理由的最佳方式。

好的,问题不在于Ubuntu,而是doxygen本身。看起来doxygen 1.7.6.1存在问题,它没有遵循对名为*.tcl的文件的过滤器设置,而是继续使用自己的内部解析器,这对我的注释不起作用,因为它们是根据我的过滤器编写的,并且是在doxygen有任何处理Tcl源代码的概念之前编写的。我将不得不降级我的Ubuntu构建环境上的doxygen版本,并向Doxygen开发人员反映这个问题。