相依性地狱

✍ dations ◷ 2025-05-18 08:33:31 #反模式,软件包管理系统,版本控制系统,计算机错误

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

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

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

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

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

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

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

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

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

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

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

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

相关

  • 神经心理学异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 演化心理学 实验心理学
  • 黄帝三部针灸甲乙经《针灸甲乙经》,全名《黄帝三部鍼灸甲乙经》,是现存最早的一部针灸专书,(公元256-282 年)晋皇甫谧(士安)编辑整理《素问》、《针经》、《明堂孔穴针灸治要》,所编著而成。 全书共十
  • 詹姆士·堤尔詹姆斯·埃德加·蒂尔(英语:James Edgar Till,1931年8月25日-),加拿大生物物理学家、干细胞和癌症研究人员、多伦多大学前教授。出生在萨斯喀彻温省明斯特),蒂尔率先研究了各种哺乳
  • 腾讯微博腾讯微博是腾讯公司于2010年4月1日推出的一项微博客服务,微博用户可以通过网页、短信、手机程序、QQ等方式发布最长140字的广播,后因新浪微博的崛起该微博几乎处于半废止状态
  • 黑木耳黑木耳(学名: "猶大的耳朵"),又称云耳、木耳、木檽、光木耳、木蕊、木菌、树鸡、䓴(音同“软”),是木耳科木耳属一种食用菌。黑木耳子实体通常是3至8厘米(1.2至3.1英寸)长,但也可以是
  • 蓝酷Scott Stephens Michael Vangerov Nikki Nova Layla Loxa 蓝酷 (Liquid Blue)是一个独立流行乐队, 1996年由司格特 ·斯蒂芬森和迈克尔· 凡加洛夫在加利福利亚的圣地亚哥组建
  • 完颜冶诃完颜冶诃,(?-?),女真部落勃堇。完颜冶诃世系出自乌骨廼,居住在神隐水完颜部,为其部勃堇。与同部人把里勃堇,斡泯水蒲察部胡都化勃堇、厮都勃堇,泰神忒保水完颜部安团勃堇,统门水温蒂痕
  • 簇花草属簇花草属是一类不含叶绿素的寄生植物,它们只寄生在半日花科的岩玫瑰属和欧洲半日花属的植物上面,主要生长在地中海区域、南非和马达加斯加岛。.其中和是雌雄异体体的,而是雌雄
  • 妒鼠属妒鼠属(),哺乳纲、啮齿目、鼠科的一属,而与妒鼠属(妒鼠)同科的动物尚有澳洲白尾鼠属(澳洲白尾鼠)、鼢鼠亚科、拟林鼠属(拟林鼠)等之数种哺乳动物。
  • 费拉拉和摩德纳公爵列表本条目列出了费拉拉公国、摩德纳公国的统治者名单。摩德纳公国全称为摩德纳和雷焦公国,是一个以意大利城市摩德纳为中心的一个邦国,存在于1452年至1796年及1814年至1859年。统