2010年09月24日 星期五 11:31
有件事情我一直想不明白,就是软件包的管理。举个例子,比如有A B两个包,B依赖A,A和B又不是同一个人来维护。那么这样的话,如果此时A发生更新,A的维护者将更新后的A放到源里面,但是假设A更新后的接口与以前的接口不一致,导致用户在同步更新了源里面的A以后,B不可用。这样的情况在各个发行版里面是怎么避免的呢? -------------- 下一部分 -------------- 一个HTML附件被移除... URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20100924/bcbc4e96/attachment.html>
2010年09月24日 星期五 12:29
2010/9/24 Zhang Jiarui <cylonspy在gmail.com>: > 有件事情我一直想不明白,就是软件包的管理。举个例子,比如有A > B两个包,B依赖A,A和B又不是同一个人来维护。那么这样的话,如果此时A发生更新,A的维护者将更新后的A放到源里面,但是假设A更新后的接口与以前的接口不一致,导致用户在同步更新了源里面的A以后,B不可用。这样的情况在各个发行版里面是怎么避免的呢? 我的感觉,在 FreeBSD ports 里,如果接口或者二进制彻底不兼容则会复制原 port 重新弄一个名为 A2 之类的 port,比如python24, python25, python26, python27, python31;postgresql73~90。 如果是很小的不兼容,则自己打个小补丁。
2010年09月25日 星期六 08:53
2010/9/24 Zhang Jiarui <cylonspy在gmail.com> > 有件事情我一直想不明白,就是软件包的管理。举个例子,比如有A > B两个包,B依赖A,A和B又不是同一个人来维护。那么这样的话,如果此时A发生更新,A的维护者将更新后的A放到源里面,但是假设A更新后的接口与以前的接口不一致,导致用户在同步更新了源里面的A以后,B不可用。这样的情况在各个发行版里面是怎么避免的呢? > > 一般,接口必须是向下兼容的。如果在接口这个层面存在着不兼容,通常软件的作者会在发布记录和变更记录中非常明确的说明和强调这一点。如果 A 包的维护者发现了这一点,负责任的话,会去查找“依赖A的包”并且同相关维护者联系。这是从 A 这个层面来说的。 从 B 包的维护者来说,如果他知道 A 包是一个经常会改变接口的包,那么它在指定依赖的时候,会把版本号直接指定为 = 符号,此时,必须 A 包完全等同于 B 包所指定的版本,B 包才是有效的,当 A 包升级之后,B 包就自动失效。 通常而言,之所以主流的发行版都是分版本的,就是为了尽量减少在同一个版本中出现类似的情况。而在同一个版本中,基础包是不会发生“接口不兼容性”的升级的。 archlinux 怎么解决这个问题我不知道,但我知道archlinux如果你很久(例如一年)不升级,那么系统基本就没法很安全的升级上去了。因为他也只解决了临近的几个版本之间的升级问题。 -------------- 下一部分 -------------- 一个HTML附件被移除... URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20100925/02662a15/attachment.html>
Zeuux © 2024
京ICP备05028076号