相依性地狱

✍ dations ◷ 2025-04-26 16:55:05 #反模式,软件包管理系统,版本控制系统,计算机错误

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

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

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

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

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

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

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

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

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

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

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

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

相关

  • 亚美大陆亚美大陆(Asiamerica)是一块由劳亚大陆形成的大陆,而浅海将之分为位于西方的欧亚大陆与位于东方的北美洲。存在于白垩纪晚期到始新世,并在第四纪更新世再次出现。5千万年内,这块
  • 恐头兽亚目恐头兽亚目(学名:Dinocephalia)是个大型早期兽孔目演化支,繁盛于二叠纪的瓜德鲁普世,但之后灭绝而且没有留下任何后代。除了巴莫鳄亚目与始巨鳄科以外,恐头兽类是兽孔目中最原始的
  • 搜狗百科搜狗百科(原“搜搜百科”)为腾讯旗下搜索网站搜搜(SOSO)发布的一个由用户参与编辑的在线百科全书,正式上线于2009年3月30日,2014年3月24日正式更名为搜狗百科。截止2012年7月1日为
  • 代数方程代数方程是未知数和常数进行有限次代数运算所组成的方程。代数方程包括有理方程和无理方程。有理方程又包括整式方程与分式方程。一元一次方程都可化为其标准形式
  • 日本狼日本狼(学名:Canis lupus hodophilax)是一种已灭绝的狼亚种,曾经在日本大量繁衍,分布于本州、四国、九州,之后被人大量猎杀,最后在1905年灭绝。另一亚种北海道狼和日本狼是近亲,但亦
  • 棕榈狸亚科棕榈狸亚科(学名:Paradoxurinae)又名椰子猫亚科,是食肉目灵猫科的一个亚科,1864年由约翰·爱德华·格雷首次描述。
  • 美国交通虽然美国在铁路客运方面薄弱,且大都市普遍存在交通堵塞的问题,但美国仍然是世界上交通最为发达的国家之一。17世纪之后,随着殖民地的发达,美国各地的交通网开始逐渐成形。1869年
  • 农校篝火农校篝火(Aggie Bonfire)是德州农工大学的一项长久存在的校园传统,同时也是该校与德克萨斯大学奥斯汀分校的大学竞争的一部分。九十年来,德州农工学生,也称Aggies,每年秋季都在校
  • 如樱花般美好的你“如樱花般美好的你”是生物股长的生物的第8张单曲,是二专Life Album的先行单,和前一张单曲茜色の约束之间相隔约三个月,是2008年的第1张单曲,2008年1月30日由Epic Records Japa
  • 安塞尔·埃尔格特安塞尔·埃尔格特(英语:Ansel Elgort,1994年3月14日-),美国男演员、电子音乐制作人和DJ。2013年,他出演电影《魔女嘉莉》。2014年,埃尔格特在薇若妮卡·罗斯的小说改编电影《分歧者: