zoukankan      html  css  js  c++  java
  • linux下的依赖关系

    1.一般来说依赖关系可以使得软件较小并且某个lib修复bug以后所有被依赖的软件都能得到好处。

    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依赖于它,所以想改就改了,虽然大部分情况下,软件能做到向后兼容,但是仍然有意外的时候。
  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/jjkv3/p/3821354.html
Copyright © 2011-2022 走看看