Software-Installation

為什麼Linux在安裝軟體時有這麼多依賴問題,而Windows除了VC++等少數情況下沒有?

  • February 24, 2016

我是 Windows 使用者,我還需要大量使用 Linux 發行版來工作。由於所有依賴項失去/版本未升級/作業系統發行版版本不匹配,安裝軟體非常困難。

並不是說我不欣賞 Linux 的優點。我只是想知道原因。Windows 是如何處理這個問題的?是因為 Windows 胖安裝程序捆綁了所有依賴項嗎?

具體來說,讓我們以 Ubuntu 和 apt 為例。每次作業系統升級時,例如精確到可信,依賴關係就會中斷。很多次的解決方法就是繼續使用舊版本。當然,開發人員應該測試並確保它與新的作業系統版本兼容,並在儲存庫中標記為 so。

簡短的回答是,Windows 安裝程序通常包含所有必需的庫作為 DLL,這些庫通常安裝在與應用程序相同的目錄中,並且通常只能由該應用程序使用。這意味著如果您有兩個或三個使用相同源庫(例如,壓縮庫或 GUI 元素)的 Windows 產品,它們都將安裝相同的 DLL,可能具有不同的版本。

這會導致膨脹,並可能導致安全漏洞,因為更新檔可能無法一致地應用於同一庫的所有已安裝副本。

確實存在一些共享庫(顯然。包括作業系統提供的庫),在這種情況下,您需要確保已安裝它們並且沒有簡單的內置 Windows 解決方案(通常由安裝程序自己處理)。

現代 Linux 發行版帶有包管理器,它應該處理髮行版儲存庫中任何應用程序的依賴關係。這是打包發行版的大部分工作(以及自定義元素以提供一致性)。例如,apt處理 Debian 中的依賴關係,因此您無需擔心,就像您從 Debian 儲存庫安裝一樣。

如果您正在下載和安裝自己的包或從原始碼編譯,那麼是的,您需要自己管理依賴項。

引用自:https://unix.stackexchange.com/questions/265271