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依赖于它,所以想改就改了,虽然大部分情况下,软件能做到向后兼容,但是仍然有意外的时候。

linux下的依赖关系

时间: 2024-10-07 11:18:33

linux下的依赖关系的相关文章

Maven之(九)依赖关系

在maven的管理体系中,各个项目组成了一个复杂的关系网,但是每个项目都是平等的,是个没有贵贱高低,众生平等的世界,全球每个项目从理论上来说都可以相互依赖.就是说,你跟开发spring的大牛们平起平坐,你的项目可以依赖Spring项目,Spring项目也可以依赖你的项目(虽然现实中不太会发生,你倒贴钱人家也不敢引用). 项目的依赖关系主要分为三种:依赖,继承,聚合 依赖关系 依赖关系是最常用的一种,就是你的项目需要依赖其他项目,比如Apache-common包,Spring包等等. <depen

linux 下 pdf 转换成txt

pdf有转换,如果是非扫描的,转换很快,识别率100%,很多软件可以转:如果是扫描的,就比较麻烦需要用到OCR技术(文字识别). 在linux下: 依赖包  poppler-utils  tesseract tesseract-ocr-chi-sim 情况一:pdftotxt 命令 可以转换非扫描版,免费又方便,只是格式.字体都没了 情况二:pdftoppm + tesseracr 可以实现扫面版的转换 情况一操作 pdftotxt  name.pdf   new.txt 情况二操作 第一步:p

在Linux下安装ArcGIS10.2

最近由于工作需要,沉迷可视化无法自拔,一直在研究基于GIS的地图可视化,自己在本机windows搭建了一个ArcGIS服务器,用Tableau和R调用WMS服务成功,不愧是GIS元老级应用,效果超赞. 由于生产系统基本基于Linux环境的,发现ArcGIS也有相应的Linux版本,说干就干.下了整个的ISO文件,找了一堆教程,准备照着装一遍,在领导面前ZB.谁知过程比想象的更艰辛,网上资料基本都是过期的,基本源于一个版本,也存在些许错误.费尽九牛二虎之力才最终搞定了. 嗯,第一篇博客就来分享下L

Maven之依赖关系

在maven的管理体系中,各个项目组成了一个复杂的关系网,但是每个项目都是平等的,是个没有贵贱高低,众生平等的世界,全球每个项目从理论上来说都可以相互依赖.就是说,你跟开发Spring的大牛们平起平坐,你的项目可以依赖Spring项目,Spring项目也可以依赖你的项目(虽然现实中不太会发生,你倒贴钱人家也不敢引用). 项目的依赖关系主要分为三种:依赖,继承,聚合 依赖关系 依赖关系是最常用的一种,就是你的项目需要依赖其他项目,比如Apache-common包,Spring包等等. [html]

深入解析Linux内核及其相关架构的依赖关系

Linux kernel 成功的两个原因: 灵活的架构设计使得大量的志愿开发者能够很容易加入到开发过程中:每个子系统(尤其是那些需要改进的)都具备良好的可扩展性.正是这两个原因使得Linux kernel可以不断进化和改进. 一.Linux内核在整个计算机系统中的位置 分层结构的原则: the dependencies between subsystems are from the top down: layers pictured near the top depend on lower la

【原创】Linux下共享库嵌套依赖问题

问题场景: 动态库 librabbitmq_r.so 内部依赖动态库 libevent_core.so 和 libevent_pthreads.so : 可执行程序 sa 依赖动态库 librabbitmq_r.so ; 在链接生成 sa 的时候希望只指定 librabbitmq_r.so 而不指定 libevent_core.so 和 libevent_pthreads.so . 错误信息: ... g++ ../source/authorisecfg.o ../source/bmcinst.

Linux软件间的依赖关系(转)

Linux中的软件大部分是零碎的,其粒度比windows的小很多,软件之间的依赖关系很强烈,下面是自己的一些理解: 一.Linux中的软件依赖Linux中的软件依赖关系成一颗拓扑树结构,比如A直接或间接依赖B,那么B就不可能直接或间接依赖A.试想从时间上A.B必然有一个先出现,而先出现的不可能依赖于后出现的:并且如果A与B互相依赖则就是“鸡与蛋”的问题,因此必然有一个先出现而另一个依赖于先者. 二.Linux的软件安装与卸载(1)安装软件A必须率先安装A依赖的所有软件:卸载软件A则必须率先卸载依

Linux下共享库嵌套依赖问题 (转载)

转自:http://my.oschina.net/moooofly/blog/506466 问题场景: 动态库 librabbitmq_r.so 内部依赖动态库 libevent_core.so 和 libevent_pthreads.so : 可执行程序 sa 依赖动态库 librabbitmq_r.so ; 在链接生成 sa 的时候希望只指定 librabbitmq_r.so 而不指定 libevent_core.so 和 libevent_pthreads.so . 错误信息: ... g

linux下依赖库的版本问题引起的安装失败:libssl-dev版本问题无法安装 :libssl-dev : 依赖: libssl1.0.0 (= 1.0.1-4ubuntu3) 但是 1.0.1-4ubuntu5.31 正要被安装

依赖库版本问题引起的安装失败解决方法如下有两种: 1.是由于源需要更新,如下操作: libssl-dev : 依赖: libssl0.9.8 (= 0.9.8o-1ubuntu4) 但是 0.9.8o-1ubuntu4.4 正要被安装 解决方法 进入“系统->系统管理->更新管理器->设置”,在弹出的“软件源”对话框中选“更新”标签页,选中“Ubuntu 更新”下面的四个复选框,关闭后 在终端先执行“sudo apt-get update”就ok了. 转自:http://baalwolf