1.通常来讲依赖关系可使得软件较小而且某个lib修复bug之后全部被依赖的软件都能获得好处。api
有些时候依赖关系也确实有点烦人。
我上次碰到一个例子:
我安装的是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依赖于它,因此想改就改了,虽然大部分状况下,软件能作到向后兼容,可是仍然有意外的时候。