在使用Ubuntu和其他基于Debian的发行版时,我注意到软件repos中的软件包通常包含主版本号。
例如,
apache2tomcat7php5wine1.4mysql-server-5.5但是,我注意到没有可用的apache1包,其余的也是类似的。如果软件包的名称随着软件的更新而改变,这难道不妨碍包管理的主要目标之一(容易升级)吗?
如果Apache 3明天发布,如果我想升级,我需要手动安装apache3包吗?
发布于 2012-07-30 01:42:37
包的命名类似于需要(或曾经)简化包的两个主要版本之间的转换,并且需要很长的时间。在过渡时期,新版本和旧版本都可以使用,但有一项谅解,即在未来某个时候,旧版本(S)将被停用。
有时,在您当前使用的系统发布期间,会发生过渡阶段。对于某些包,经常会发生这种情况,因此您可以期望在每个新的系统版本中看到过渡包版本。软件开发工具通常属于这一类,因为升级到与系统版本相同的计划中的新工具可能是不切实际的。我的公司对GCC、Autoconf和Perl的特定版本的依赖可能是5年周期,而我的操作系统可能处于3年的升级周期。因此,除了开发新操作系统时的任何内容之外,如果新的OSes包含一些包的旧版本,我就可以更容易地采用新的操作系统。
其他时候,这些重大版本的改变发生在很久以前,过去,现在每个人都在当前版本上。例如,Apache就是这样的情况。从兼容性的角度看,1.3到2.0的更改比任何2.x版本的更改都要大得多,因此,一旦每个人都关闭了1.3,就不再需要在给定的OS版本中提供多个Apache版本。但是,一旦让每个人都使用了apache2包,就没有很好的理由将其重命名为apache。这会引起不必要的升级麻烦。此外,在过去认为有需要暂时提供两个平行版本的情况下,将来可能会再次出现这种需要。
此包命名实践通常只在库或重要的核心包中进行。对于更多的外围程序包,您只需升级到当前的任何版本。
与应用程序相比,库通常被以这种方式对待,因为从本质上讲,其他包依赖于它们。库越受欢迎,要求依赖于它的所有其他包都被重建和重新绑定,这样库就可以在没有过渡期的情况下升级到一个新的主要版本,这就越不切实际。
通常,当应用程序被这样对待时,这是因为它包含一个库元素。例如,Apache不仅仅是一个web服务器,它还为插件提供了一个开发API。(mod_foo等)如果某个人有一个与Apache1.3插件ABI相链接的旧mod_something,并且没有升级它以使用更新的2.0API,那么如果您的操作系统继续提供旧的Apache1.3,直到所有插件创建者都有机会更新他们的插件,这是很方便的。
发布于 2012-07-30 01:44:13
据我所见,原因是:
例如,Linux内核(截至今天)有稳定版本 3.5、3.4.7、3.2.24、2.6.35.13等.如果您在一个系统上运行2.6.35,并且您想保持它的最新,但不升级这个内核,您可以安装适当的软件包。
https://unix.stackexchange.com/questions/44271
复制相似问题