linux下的依赖关系

1.通常来讲依赖关系可使得软件较小而且某个lib修复bug之后全部被依赖的软件都能获得好处。api

  1. 依赖关系下,对于维护也有利有弊,第一,若某个被依赖的软件出现bug或者漏洞,这时候就只须要维护一个软件,能够不动依赖它的上层软件,而win下面,(除了系统的api),安装包都被打成静态包了,这时候若是有个bug,那每一个软件都须要打补丁;其二,简化了安装,无须判断其余须要连接的软件的位置。
  2. 有些时候依赖关系也确实有点烦人。
    我上次碰到一个例子:

    我安装的是gentoo,而且安装了docky这个软件,而docky依赖于mono。
    有一次我在作emerge -Dup world的时候提示我mono有更新,从2.2更新到2.8了,可是docky尚未。
    因而我就emerge --update --deep world把这个mono更新了。
    以后发现docky就没法启动了。
    从命令行启动docky之后就发现原来依赖于mono的某个api函数被删除了... 囧死。
    google了一下发现新版本的docky已经修复了这个问题,可是emerge --sync的时候发现新的ebuild尚未进去。
    没办法只好找gentoo bug,里面发现了一个ebuild(固然本身写ebuild也简单的很),down下来之后再次emere docky, 终于搞定了。
    幸亏docky并非什么重要的软件,但即使如此,仍然让人感受不爽。固然这更多的是portage系统的问题,由于ebuild通常对于依赖关系会指定>=某个版本的软件,而不多用=某个版本的软件。然而>=才是合理的,这样才能保证被依赖的软件也能获得升级。因此此问题几乎不可避免。依赖问题的关键在于,开发软件A的人员,不多会顾及,甚至未必知道还有个软件B依赖于它,因此想改就改了,虽然大部分状况下,软件能作到向后兼容,可是仍然有意外的时候。
相关文章
相关标签/搜索