Debian和Fedora試圖解決依賴問題

Linux發行版面臨依賴性增加的問題 的項目,雖然 保留Python,Perl和Ruby代碼的依賴項數量 在合理的範圍內,JavaScript項目將實踐劃分為很小的庫,通常執行簡單的功能。

NPM存儲庫已經擁有超過一百萬個軟件包 和典型應用 鏈接到數百個依賴項,而後者又具有各自的依賴性,因此很難在Linux發行版中維護和分髮帶有JavaScript應用程序的傳統軟件包。

由於JavaScript庫依賴關係相互糾纏在一起,因此在發行版中使用此類庫更新任何軟件包 它可能會破壞其他程序包。

版本綁定加劇了這個問題:一個庫可能需要一個版本的依賴關係才能穩定運行,而另一個庫可能需要另一個版本。

許多項目需要使用最新版本的庫才能工作, 並不總是滿足發行版的穩定性要求(在Node.js生態系統中使用最新版本的框架進行持續開發,並且發行版需要幾年的支持)。

嘗試僅在發行版中修復軟件包版本 導致過時版本的增加 在存儲庫中已經多年沒有更新了。 一個包裝的維護中斷會對許多其他包裝產生不利影響,並帶來更多問題。

此外,l交叉依賴 導致以下事實: 無法從系統中卸載Node.js,從而防止您卸載其他Node.js程序。

為了應對這種情況,Fedora項目最近批准了一項計劃,以阻止默認的單獨軟件包與基於Node.js的項目中使用的庫的形成。

他決定從Fedora 34開始,僅為Node.js提供基本的程序包,包括解釋器,標頭,主庫,二進製文件和基本的程序包管理工具(NPM,yarn)。

在使用Node.js的Fedora存儲庫應用程序中, 允許將所有現有的依賴項嵌入到程序包中,而無需劃分和分隔單獨程序包中使用的庫。

嵌入庫將消除小程序包的混亂情況,簡化程序包維護(以前,維護人員使用程序庫檢查和測試數百個程序包所花費的時間比使用程序的主程序包要花費更多的時間),使基礎結構免於衝突庫並解決與庫版本鏈接的問題(維護程序將在軟件包中包括經過測試和生產測試的版本)。

整合的弊端將是進行更正過程的複雜化 庫中的漏洞,這需要包括漏洞庫在內的所有軟件包的維護者進行協調工作。 程序包可能會忘記更新易受攻擊的內置庫,並且程序包將不被注意的危險。

的開發者 Debian也正在討論切換到類似的軟件包依賴集成模型。 除了Node.js之外,討論還涉及使用PHP和Go語言為Kubernetes平台和項目創建軟件包的趨勢,為此,它們傾向於劃分為較小的依賴項。 尚未做出任何決定,但希望隨著時間的流逝,問題只會變得更加嚴重,並且該項目遲早會被迫採取行動。

列舉了gvm(Greenbone漏洞管理)安全掃描程序的gsa(Greenbone安全助手)Web界面,作為軟件包維護者所遇到問題的一個示例。

事實證明,Desa發行的gsa版本與gvm的較新版本不兼容,但是由於將gsa包含重大更改並使用npm下載必需的Node.js庫,因此無法將gsa更新到當前版本。

所請求的庫太多了,需要有人在Debian中創建新軟件包來維護它們,因為Debian規則禁止在構建過程中加載外部組件。

來源: https://lwn.net/


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   qtkk 他說:

    ECMAscript中的框架和庫的這種碎片化已無法控制。
    Buenartículo。