Answers:
程序包的命名方式类似于(或曾经)需要简化程序包的两个主要版本之间的过渡的地方,并且这样做所需的时间预计会很长。在过渡期间,新版本和旧版本都将保持可用状态,但前提是将来会停止使用旧版本。
有时过渡期是在您当前使用的系统发行版中发生的。对于某些软件包,它经常发生,您可以期望在每个新的系统版本中都能看到过渡的软件包版本。软件开发工具通常属于此类,因为按照与系统发布相同的时间表升级到新工具可能不切实际。我公司对特定版本的GCC,Autoconf和Perl的依赖可能需要5年的周期,而我的操作系统可能需要3年的升级周期。因此,如果它包含我的某些软件包的旧版本以及开发新OS时的最新版本,则使我更容易采用新OS。
有时,这些主要版本更改发生在很久以前,过去,而现在每个人都在使用当前版本。例如,Apache就是这种情况。从兼容性的角度来看,从1.3到2.0的更改远比2.x版本的任何更改都要大得多,因此,一旦每个人都退出1.3,就不再需要在给定的OS版本中继续提供多个Apache版本。但是,一旦大家都使用了该apache2
软件包,就没有很好的理由将其重命名为just apache
。这将导致不必要的升级麻烦。此外,过去认为暂时需要提供两个并行版本的需求将来可能会再次出现。
这种程序包命名惯例通常仅在库或重要的核心程序包中发生。对于更多外围设备包,预计您将升级到当前版本。
库比应用程序更常使用这种方式,因为从本质上来说,其他软件包也依赖于它们。库越受欢迎,要求完全依赖于它的其他所有软件包都进行重建和重新链接就变得更加不切实际,这样就可以在没有过渡期的情况下将库逐步升级到新的主要版本。
通常,以这种方式处理应用程序时,是因为它包含一个库元素。例如,Apache不仅是Web服务器,它还为插件提供了开发API。(mod_foo
等等)如果某人有一个mod_something
与Apache 1.3插件ABI关联的旧链接,并且尚未将其升级为使用较新的2.0 API,那么在所有插件创建者有机会之前,您的操作系统继续提供旧的Apache 1.3便很方便。更新他们的插件。