我想知道错误修复在 Linux 发行版中到底是如何工作的。我的意思是,毕竟发行版是由外部开发人员制作的开源软件组成的,然后由发行版的维护者打包。那么为什么每个发行版都有自己的错误跟踪器呢?难道这些bug不应该提交给此类软件的原作者吗?
答案1
(我将原始作者或原始软件称为上游作者和上游软件,因为我习惯这样称呼它们。)
从最终用户的角度来看,最好有一个地方来报告错误,而不必在他们使用的所有软件的各种上游错误跟踪器中注册帐户。
从上游作者的角度来看,能够免受发行版用户的错误报告的影响是件好事,原因如下:
- 发行版的维护者可能会自己引入错误(或者由于发行版包之间的交互而可能出现错误),因此不应该由上游作者来修复这些错误;
- 该发行版可能有上游软件作者不关心或无法处理的要求(例如各种硬件架构)。
请注意,这并不意味着上游软件中的错误不会被转发;而是意味着上游软件中的错误不会被转发。如果用户在发行版错误跟踪器中提交错误,并且该错误是上游的责任,则该错误将被转发到上游错误跟踪器。但通常发行版维护者会处理这个问题。对于复杂的错误,用户很可能会被指示跟进上游,以避免中间人。发行版错误跟踪器很好地支持了这一点,并且当错误在上游错误跟踪器中发生变化时,会自动更新错误的状态。
从发行版维护者的角度来看,有必要有一些特定于发行版的错误跟踪器来跟踪发行版本身要完成的工作(库版本更改、新工具链、新架构、新发行版工具...)。
此外,在许多情况下,发行版提供对旧版本软件包的支持,尽管上游作者已经在较新版本的软件中修复了这些错误,但这些错误可能仍然存在。在这种情况下,用户要求上游作者修复错误有点烦人,因为从上游的角度来看它们已经修复了;如果错误足够烦人,则应该由发行版的维护人员向后移植修复程序。 (对于重要软件包中的安全修复程序,这是有争议的;许多上游为旧版本本身提供了安全修复程序。)
另一个需要考虑的因素是,某些仍然重要的软件可能不再有上游;cron
例如,这种情况在很长一段时间内都是如此。如果发行版没有自己的错误跟踪器,用户就没有地方报告此类软件中的错误。
在大多数项目中,所有这一切往往以一种友好的方式很自然地发生:发行版维护者帮助上游修复错误,反之亦然,发行版维护者与其他发行版共享错误修复。