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

Distribuțiile Linux se confruntă cu problema creșterii dependențelor de proiecte, deși se păstrează numărul de dependențe pentru codul Python, Perl și Ruby În limite rezonabile, proiectele JavaScript se împart în biblioteci foarte mici, îndeplinind adesea o funcție simplă.

Depozitul NPM are deja peste un milion de pachete și aplicații tipice link către 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ă interconectării strânse a dependențelor bibliotecii JavaScript, actualizarea oricărui pachet cu astfel de biblioteci într-o distribuție poate rupe alte pachete.

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

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

Încearcă să remedieze versiunile de pachete 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 creează și mai multe probleme.

Mai mult, ldependențe încrucișate duc la faptul că multe biblioteci din 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 aborda 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.

El a 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 bază de gestionare a pachetelor (NPM, fire).

În aplicațiile de depozite Fedora care utilizează Node.js, este permisă încorporarea tuturor dependențelor existente într-un pachet, fără divizarea și separarea bibliotecilor utilizate în pachete separate.

Încorporarea bibliotecilor va scăpa de aglomerația de pachete mici, va simplifica întreținerea pachetelor (anterior întreținătorul a petrecut mai mult timp examinând și testând sute de pachete cu biblioteci decât în ​​pachetul principal cu programul), va salva infrastructura din conflictele de biblioteci și va rezolva problemele legate de versiuni de bibliotecă (întreținătorii vor include versiuni testate și testate în producție în pachet).

Dezavantajul integrării va fi complicația procesului de aducere a corecțiilor vulnerabilități în biblioteci, care vor necesita o muncă coordonată a întreținătorilor tuturor pachetelor care includ biblioteca vulnerabilă. Există pericolul ca un pachet să uite să actualizeze o bibliotecă încorporată vulnerabilă și pachetul va trece neobservat.

Dezvoltatorii din Debian discută, de asemenea, trecerea la un model similar de integrare a dependenței de pachete. Pe lângă Node.js, discuția se referă la crearea de pachete pentru platforma Kubernetes și proiecte în limbile PHP și Go, pentru care există tendința de a se împărți în dependențe mici. Nu s-a luat încă nicio decizie, dar se speră că în timp problema se va agrava și mai devreme sau mai târziu proiectul va fi obligat să facă ceva.

Interfața web gsa (Greenbone Security Assistant) pentru scanerul de securitate gvm (Greenbone Vulnerability Management) este citată ca exemplu al problemelor pe care le au întreținătorii de pachete.

Versiunea de gsa livrată 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 Node.js necesare.

Bibliotecile solicitate sunt prea multe și necesită crearea de pachete noi î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/


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

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

Lasă comentariul tău

Adresa ta de email nu va fi publicată.

*

*

  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