相依性地狱

✍ dations ◷ 2025-11-28 06:10:24 #反模式,软件包管理系统,版本控制系统,计算机错误

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

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

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

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

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

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

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

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

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

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

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

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

相关

  • 李玉良李玉良(1949年10月-),山东高密人,生于青岛。无机化学家。1975年毕业于北京化工学院二系。现任中国科学院化学研究所研究员。2015年当选为中国科学院院士。
  • ISO 3166-2国际标准化组织(ISO)的ISO 3166-2国际标准是ISO 3166的第二部分,定义约3700个国家或地区的主要行政区代码。每一行政区代码格式为“国家缩写-行政区代码”,国家缩写是ISO 3166-1
  • 1912第五届夏季奥林匹克运动会(英语:the Games of the V Olympiad,法语:les Jeux de la Ve Olympiade,瑞典语:V Olympiaden),是一场于1912年5月5日至7月27日在瑞典斯德哥尔摩举行的综合
  • 约洛优洛县(Yolo County)是美国加州中北部的一县,毗邻萨克拉门托县、索拉诺县、纳帕县、湖县、科卢萨县、和萨特县等加州县份。县首府位于伍德兰市(Woodland)。根据2000年人口普查,优
  • 阿里·艾哈迈德·赛义德·伊斯比尔阿里·艾哈迈德·赛义德·伊斯比尔(阿拉伯语:علي أحمد سعيد إسبر‎,1930年1月1日-),笔名阿多尼斯(أدونيس‎、Adunis),叙利亚诗人、思想家、文学理论家、翻译家
  • Led Zeppelin (专辑)《Led Zeppelin》(参考译名:齐柏林飞艇)是英国摇滚乐队齐柏林飞艇的首张专辑,于1969年1月12日由大西洋唱片在美国发行。该专辑确立了他们融合布鲁斯和摇滚的风格,为乐队吸引了一
  • 佛教徒危机佛教徒危机(越南语:Biến cố Phật giáo/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS
  • 加贺乙彦加贺乙彦(1929年4月22日-),生于日本东京府东京市芝区三田(现东京都港区),精神科医师与小说家。小学五年级到六年级时曾热衷阅读新潮社出版的‘世界文学全集’。这个经验对于日后他
  • 投58线投58线 石牌~北埔,是位于南投县的一条乡道,起点位于南投县鹿谷乡石牌,终点于南投县水里乡北埔,全长7.154公里。今日列表・1961年列表・1983年列表・废止与缺号列表 注:灰字为未编
  • 教宗君士坦丁教宗君士坦丁 (拉丁语:Constantinus PP.;664年-715年4月9日)是708年3月25日至715年4月9日在位的教宗。由出生地而言他是叙利亚人,于708年3月25日成为教宗。他热心于维护宗座的至高