相依性地狱

✍ dations ◷ 2025-07-21 09:59:53 #反模式,软件包管理系统,版本控制系统,计算机错误

相依性地狱(英语:dependency hell),又称依赖地狱,是指在操作系统中由于软件之间的依赖性不能被满足而引发的问题。

一个软件包依赖于其它必要的软件包(且版本要符合要求),使得软件包系统形成了复杂的依赖关系网络,并可能引发一系列问题。一些软件包可能因为依赖性无法满足,需要安装大量软件包;另一方面,一个软件包的卸载可能引发数量众多的软件包无法工作。

目前,GNU/Linux通过高级软件包管理机制,一定程度上解决了相依性地狱问题。较著名的有Debian阵营的APT和Redhat阵营的Yum,及 Yum 的后继包管理工具 DNF。

相较“另起炉灶”的做法,现代软件往往会利用一些已有的组件(如库、程序、多媒体文件)进行开发。这些组件可能是某个软件,也可能是专门为其他软件使用而设计(库)。程序开发者根据特定版本的组件来设计自己的软件。这种方式减少了开发的工作量,使得程序比较轻便。但是该软件要正确运行,必须安装了指定版本的某些组件。

做一个比喻:你在建造一所房子,而并不生产门窗。由于门洞和窗口的尺寸要和门窗配合,因此你不得不寻找了一家门窗厂商,以他们生产的门窗作为标准,来建造合适的房子。你建造的房屋必须依赖于这家门窗厂商所生产的特定型号的门。

这便是相依性的产生过程。

若只有简单的相依性,则比较容易解决。如A软件依赖e、z软件包,而e、z软件包没有依赖,只需要安装e、z软件包,再安装A软件即可。就如建造商与门窗商的依赖关系,简单明了。

而当依赖性过多,且具有多级结构,形成错综复杂的网络,依赖性的解析就会变得异常困难,甚至出现无法解析的致命错误。

一个软件包可能依赖于众多的库,因此安装一个软件包的同时要安装几个甚至几十个库包。

指从所需软件包到最底层软件包之间的层级数过多。这会导致依赖性解析过于复杂,并且容易产生依赖冲突和环形依赖。

即两个软件包无法共存的情况。除两个软件包包含内容直接冲突外,也可能因为其依赖的低层软件包互相冲突。因此,两个看似毫无关联的软件包也可能因为依赖性冲突而无法安装。

即依赖性关系形成一个闭合环路,最终导致:在安装A软件包之前,必须要安装A、B、C、D软件包,然而这是不可能的。

相关

  • 马里奥·苏亚雷斯马里奥·阿尔贝托·诺布雷·洛佩斯·苏亚雷斯(葡萄牙语:Mário Alberto Nobre Lopes Soares,1924年12月7日-2017年1月7日),葡萄牙政治家,曾任葡萄牙总统及总理。在2007年票选最伟大
  • 输精管切除术后疼痛综合征输精管切除术后疼痛综合症(Post-vasectomy pain syndrome,P.V.P.S)是在输精管切除术(男性结扎)之后的慢性生殖器疼痛症状,可能在切除后立刻有症状,也可能在结扎后几年内才有症状。
  • 1813年1813年逝世人物列表:1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月
  • 塔西姆·辛塔西姆·辛(印地语:Tarsem Dhandwar Singh,1961年5月26日-)是一名印度导演,涉及领域有电影、MV和商业广告。他生于印度,父亲是一名飞机技师。他先在印度西姆拉上学,后来毕业于加州帕
  • AR-10自动步枪AR-10(Armalite Rifle Model 10,“阿玛莱特10型步枪”)是一种由美国人尤金·斯通纳设计,弹匣供弹、气动式、气冷自动步枪,发射7.62×51毫米(.308寸)北约标凖弹药。AR-10采用直接导
  • 总需求总需求(英语:aggregate demand,缩写:AD)是一个宏观经济学概念。指一个在一指定时期及物价的经济体系(Y)内对最终物品及服务的需求的总和。这是商品及服务在一个经济体系中任何可能
  • 美国各州时区列表本表是美国全部州别包括属地与特区依时区划分列表,为了方便,我们采用与美国州份邮政缩写列表中相同的州别排列顺序。其它详细的美国时区和其它的时区参见:时区。美国大部分都是
  • 白眉蓝姬鹟白眉蓝姬鹟(学名:)为鹟科姬鹟属的鸟类。该物种的模式产地在印度。
  • 2014年Aircel清奈公开赛2014年Aircel清奈公开赛是2014年ATP世界巡回赛的室外硬地网球赛事之一,于2013年12月31日至2014年1月6日期间,在印度清奈的SDAT网球场(英语:SDAT Tennis Stadium)举行。本届为第19
  • 萨米·阿南萨米·阿南中将(阿拉伯语:سامى حافظ عنان‎, IPA:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Un