Can you summarize the following document?
        
  相較“另起爐灶”的做法,現代軟體往往會利用一些已有的元件(如庫、程式、多媒體檔案)進行開發。這些元件可能是某個軟體,也可能是專門為其他軟體使用而設計(庫)。程式開發者根據特定版本的元件來設計自己的軟體。這種方式減少了開發的工作量,使得程式比較輕便。但是該軟體要正確執行,必須安裝了指定版本的某些元件。  做一個比喻:你在建造一所房子,而並不生產門窗。由於門洞和視窗的尺寸要和門窗配合,因此你不得不尋找了一家門窗廠商,以他們生產的門窗作為標準,來建造合適的房子。你建造的房屋必須依賴於這家門窗廠商所生產的特定型號的門。  這便是相依性的產生過程。  若只有簡單的相依性,則比較容易解決。如A軟體依賴e、z軟體包,而e、z軟體包沒有依賴,只需要安裝e、z軟體包,再安裝A軟體即可。就如建造商與門窗商的依賴關係,簡單明瞭。  而當依賴性過多,且具有多級結構,形成錯綜複雜的網路,依賴性的解析就會變得異常困難,甚至出現無法解析的致命錯誤。

  

  一個軟體包可能依賴於眾多的庫,因此安裝一個軟體包的同時要安裝幾個甚至幾十個庫包。

  指從所需軟體包到最底層軟體包之間的層級數過多。這會導致依賴性解析過於複雜,並且容易產生依賴衝突和環形依賴。

  即兩個軟體包無法共存的情況。除兩個軟體包包含內容直接衝突外,也可能因為其依賴的低層軟體包互相沖突。因此,兩個看似毫無關聯的軟體包也可能因為依賴性衝突而無法安裝。

  即依賴性關係形成一個閉合環路,最終導致:在安裝A軟體包之前,必須要安裝A、B、C、D軟體包,然而這是不可能的。
相依性地獄(英語:dependency hell),又稱依賴地獄,是指在作業系統中由於軟體之間的依賴性不能被滿足而引發的問題。