首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么包名包含版本号?

问为什么包名包含版本号?
EN

Unix & Linux用户
提问于 2012-07-30 01:34:23
回答 2查看 838关注 0票数 15

在使用Ubuntu和其他基于Debian的发行版时,我注意到软件repos中的软件包通常包含主版本号。

例如,

  • Apache:apache2
  • Tomcat:tomcat7
  • PHP:php5
  • 葡萄酒:wine1.4
  • MySQL:mysql-server-5.5

但是,我注意到没有可用的apache1包,其余的也是类似的。如果软件包的名称随着软件的更新而改变,这难道不妨碍包管理的主要目标之一(容易升级)吗?

如果Apache 3明天发布,如果我想升级,我需要手动安装apache3包吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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,直到所有插件创建者都有机会更新他们的插件,这是很方便的。

票数 26
EN

Unix & Linux用户

发布于 2012-07-30 01:44:13

据我所见,原因是:

  • 在软件包的主要版本中帮助迁移:当PHP 5发布时,可能需要安装PHP 4。这允许您在不同版本之间进行选择(至少在旧版本过时之前是如此)。
  • 继续对旧版本的软件提供更新(例如,在Apache 3发布后,可能需要修补Apache 2),而不将其升级到较新的主要版本。

例如,Linux内核(截至今天)有稳定版本 3.5、3.4.7、3.2.24、2.6.35.13等.如果您在一个系统上运行2.6.35,并且您想保持它的最新,但不升级这个内核,您可以安装适当的软件包。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/44271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档