我喜欢 Debian 提供各种变更日志的方式。例如,对于大多数软件包来说,它有
changelog.gz
,上游变更日志提供了任何两个版本之间的差异的详细信息,有时甚至是点版本之间的差异。如今,通常是从$ git shortlog
正在使用的 VCS 中的任何等效命令中提取出来的。changelog.Debian.gz
,列出对包所做的更改/改进。一些常见的更改包括打包团队的更改、标准版本的更改、更新构建依赖项、修复 Debian 中尚未被上游接受的某些问题的任何补丁、对 或 的任何更改debian/rules
可能debian/control
值得注意并需要提及。
虽然我对 Debian 的组织方式非常满意,但我想知道这种拥有单独的变更日志、与发行版更改分开跟踪上游更改以减少混乱的想法是否来自 Debian 或其他发行版。 Debian 是第一个这样做的发行版吗?如果不是,这个想法从何而来?
答案1
Debian 不是第一个分离变更日志的发行版,但它可能是第一个维护每个包变更日志的发行版。
软件变更日志已经存在很长时间了(它们是实验室笔记本或工程日志的一个相当明显的变体)。早期的 Linux 发行版以类似的方式保存自己的变更日志。由于它们记录了对发行版所做的更改,因此它们自然与所分发的软件的更改日志分开。例如,SLS有一个变更日志,其中包含以下条目
920901: Initial release (.96p4). Didn't use jump tables though.
921007: Release .98p0. Jump tables used.
921011: menus.taz: new sysinstall and sysbuild.
a1: New .98p1 image with new sysinstall
a2: New rootdisk
image.taz: 0.98p1 kernel, Fixed top.
devs.taz: modified /dev directory
image.taz: Linux .98p1 image, ps, etc.
lx96p1.taz: Linux source for .98p1 (replaces lx98.taz).
tcpip.taz: Telnet and fpt 2.2.2 binaries.
c4/: Added new disk, clisp to compiler series.
x*: Reorganized and fixed double compressed fonts.
较早的中冶集团还有变更日志,例如这个是 0.99p8。
用户熟悉斯莱克软件会发现格式很熟悉; Slackware 仍然在发行版范围内维护变更日志。
对于 SLS 和 Slackware 来说,单一的发行版变更日志是有意义的,因为它们最初都是一个人的工作(SLS 的 Peter MacDonald,Slackware 的 Patrick Volkerding),并且更改是根据整个发行版而不是单个包来考虑的(在至少,没有达到现在的程度)。
正如您在邮件列表讨论debian-devel
,Debian 中当前的变更日志实践从一开始就没有出现。 1994 年初,Debian 0.91 在发行版范围内发布变更日志并且它的包不包含更改日志(至少不包含其二进制包)。到 1994 年末和 Debian 0.93,源代码包已经保存了单独的变更日志debian.README
(其中还包含许可信息);看以LILO的打包补丁为例:
Changes
9-July-1995 Bruce Perens <[email protected]>
Upgraded to version 16.
23-December-1994 Bruce Perens <[email protected]>
Added Debian GNU/Linux package maintenance system files, and configured
for Debian.
(请注意,按照邮件列表中的建议查看诸如dpkg
Debian 文档之类的软件包并没有那么有用,因为它们是本机软件包,只有一个更改日志涵盖软件和包装更改。)
所以看起来 Debian 是第一个Linux发行版用于存储每个包、发行版特定的变更日志,与上游变更日志分开。其他发行版也纷纷效仿,至少部分如此,例如RPM 将变更日志存储在其规范文件中(尽管通常比 Debian 变更日志详细程度要低,并且仅在源代码包中)。 BSD世界里可能有类似的做法,我没有查过;我不记得九十年代初期其他 Unix 系统有哪些打包计划(如果有的话)。