Debian și Fedora încearcă să abordeze problema dependențelor

Distribuțiile Linux se confruntă cu problema dependențelor tot mai mari a proiectelor, desi numărul de dependențe pentru codul Python, Perl și Ruby rămâne același În limite rezonabile, proiectele JavaScript practică defalcarea în biblioteci foarte mici, realizând adesea o funcție simplă.

Depozitul NPM are deja peste un milion de pachete și aplicații tipice se leagă de sute de dependențe, care, la rândul lor, au propriile dependențe, ceea ce face dificilă întreținerea și distribuirea pachetelor tradiționale cu aplicații JavaScript pe distribuțiile Linux.

Datorită interacțiunii strânse a dependențelor bibliotecii JavaScript, actualizarea oricărui pachet cu biblioteci JavaScript într-o distribuție poate sparge alte pachete.

Legăturile de versiuni agravează problema: o bibliotecă poate necesita o versiune a unei dependențe pentru a funcționa stabil, iar alta poate necesita alta.

Multe proiecte necesită cele mai recente versiuni de biblioteci pentru a funcționa, care nu îndeplinesc întotdeauna cerințele de stabilitate ale distribuției (dezvoltarea continuă se practică în ecosistemul Node.js folosind cele mai recente versiuni de framework-uri, iar distribuția are nevoie de suport de câțiva ani).

Încercările de a repara versiunile pachetului numai în distribuție duce la o creștere a versiunilor învechite în depozit care nu au fost actualizate de ani de zile. Întreruperea întreținerii unui pachet afectează negativ multe alte pachete și provoacă și mai multe probleme.

Mai mult, lca dependențe încrucișate duce la faptul că multe biblioteci Node.js devine imposibil de dezinstalat din sistem, care, la rândul său, vă împiedică să dezinstalați alte programe Node.js.

Pentru a rezolva această situație, proiectul Fedora a aprobat recent un plan pentru a opri formarea implicită a pachetelor separate cu biblioteci utilizate în proiectele bazate pe Node.js.

Am decis, începând cu Fedora 34, să furnizeze numai pachete de bază pentru Node.js cu un interpret, anteturi, biblioteci primare, binare și instrumente de gestionare a pachetelor de bază (NPM, yarn).

În aplicațiile din depozitul Fedora care utilizează Node.js, Este permisă încorporarea tuturor dependențelor existente într-un singur pachet, fără a împărți și a separa bibliotecile utilizate în pachete separate.

Încorporarea bibliotecilor vă va permite să scăpați de aglomerația de pachete mici, să simplificați întreținerea pachetelor (anterior, întreținătorul petrecea mai mult timp revizuind și testând sute de pachete cu biblioteci decât pe pachetul principal cu programul), salvați infrastructura de conflicte de biblioteci și rezolvă problemele legate de conectarea la versiunile bibliotecii (întreținerii vor include versiuni testate și testate în producție în pachet).

Dezavantajul integrării va fi complicarea procesului de aducere a corecțiilor la vulnerabilitățile din biblioteci, care vor necesita o muncă coordonată de către întreținătorii tuturor pachetelor care includ biblioteca vulnerabilă. Există pericolul ca un pachet să uite să actualizeze o bibliotecă încorporată vulnerabilă și pachetul să nu fie detectat.

Dezvoltatorii din Debian discută, de asemenea, trecerea la un model similar de integrare a dependențelor în pachete. Pe lângă Node.js, discuția vizează crearea de pachete pentru platforma Kubernetes și proiecte în limbajele PHP și Go, pentru care există tendința de a se împărți în mici dependențe. Deocamdată nu s-a luat nicio decizie, dar este de așteptat ca în timp problema doar să se agraveze și mai devreme sau mai târziu proiectul să fie obligat să facă ceva.

Interfața web gsa (Greenbone Security Assistant) pentru scanerul de securitate gvm (Greenbone Vulnerability Management) este citată ca exemplu de probleme pe care le au întreținerii pachetelor.

Versiunea gsa livrată de Debian s-a dovedit a fi incompatibilă cu versiunile mai noi de gvm, dar nu a fost posibilă actualizarea gsa la versiunea curentă, deoarece conține modificări semnificative și folosește npm pentru a descărca bibliotecile necesare Node.js.

Bibliotecile solicitate sunt prea multe și necesită crearea de noi pachete în Debian pentru ca cineva să le întrețină, deoarece regulile Debian interzic încărcarea componentelor externe în timpul procesului de construire.

Fuente: https://lwn.net/


Un comentariu, lasă-l pe al tău

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   qtkk el a spus

    Această fragmentare a cadrelor și bibliotecilor din ECMAscript a scăpat de sub control.
    Articol bun