Debian i Fedora estan tractant d'abordar el problema de les dependències

Les distribucions de Linux s'enfronten a el problema de les creixents dependències dels projectes, si bé la quantitat de dependències per al codi Python, Perl i Ruby es manté dins de límits raonables, els projectes de JavaScript practiquen la divisió en biblioteques molt petites, sovint fent una funció simple.

El repositori de NPM ja té més d'un milió de paquets i les aplicacions típiques es vinculen amb centenars de dependències, Que al seu torn tenen les seves pròpies dependències, el que dificulta el manteniment i la distribució de paquets tradicionals amb aplicacions JavaScript en distribucions de Linux.

A causa de l'estret entrellaçament de les dependències de les biblioteques de JavaScript, l'actualització de qualsevol paquet amb aquestes biblioteques en una distribució pot trencar altres paquets.

Els enllaços de versions exacerben el problema: una biblioteca pot requerir una versió d'una dependència per funcionar de manera estable i una altra pot requerir una altra.

Molts projectes requereixen per funcionar les últimes versions de les biblioteques, que no sempre compleixen amb els requisits d'estabilitat de la distribució (el desenvolupament continu es practica en l'ecosistema NODE.JS utilitzant les últimes versions de frameworks, i la distribució necessita suport durant diversos anys).

Els intents de corregir versions de paquets en la distribució només condueixen a un augment de versions desactualitzades en el repositori que no s'han actualitzat durant anys. La interrupció de l'manteniment d'un paquet afecta negativament molts altres paquets i genera encara més problemes.

A més, las dependències creuades porten a el fet que moltes biblioteques de NODE.JS es tornen impossibles de desinstal·lar de sistema, El que, al seu torn, impedeix desinstal·lar altres programes de Node.js.

Per fer front a aquesta situació, el projecte Fedora va aprovar recentment un pla per aturar la formació per defecte de paquets separats amb biblioteques utilitzades en projectes basats en Node.js.

Va decidir, començant amb Fedora 34, subministrar només paquets base per NODE.JS amb un intèrpret, encapçalats, biblioteques primàries, binaris i eines bàsiques d'administració de paquets (NPM, yarn).

En les aplicacions de l'repositori de Fedora que fan servir NODE.JS, es permet incrustar totes les dependències existents en un paquet, sense dividir i separar les biblioteques utilitzades en paquets separats.

La incrustació de biblioteques permetrà desfer-se de el desordre de paquets petits, simplificar el manteniment de l'paquet (anteriorment, l'encarregat de manteniment passava més temps revisant i provant centenars de paquets amb biblioteques que en el paquet principal amb el programa), salvar la infraestructura de conflictes de biblioteques i resoldre problemes amb la vinculació a versions de biblioteques (mantenidors inclourà versions provades i provades en producció en el paquet).

El desavantatge de la integració serà la complicació de el procés de portar correccions a les vulnerabilitats a les biblioteques, el que requerirà un treball coordinat dels mantenidors de tots els paquets que inclouen la biblioteca vulnerable. Hi ha el perill que un paquet s'oblidi d'actualitzar una biblioteca vulnerable integrada i el paquet passi desapercebut.

Els desenvolupadors de Debian també estan discutint el canvi a un model similar d'integració de dependències en paquets. A més de NODE.JS, la discussió toca la creació de paquets per a la plataforma Kubernetes i projectes en els llenguatges PHP i Go, per als quals hi ha una tendència a dividir-se en petites dependències. Encara no s'ha pres una decisió, però s'espera que amb el temps el problema només empitjori i tard o d'hora el projecte es vegi obligat a fer alguna cosa.

La interfície web gsa (Greenbone Security Assistant) per l'escàner de seguretat GVM (Greenbone Vulnerability Management) es cita com un exemple dels problemes que tenen els mantenidors de paquets.

La versió enviada per Debian de gsa va resultar ser incompatible amb les versions més noves de GVM, però no va ser possible actualitzar gsa a la versió actual, ja que conté canvis significatius i fa servir NPM per descarregar les biblioteques NODE.JS necessàries.

Les biblioteques sol·licitades són massa i requereixen la creació de nous paquets en Debian perquè algú els mantingui, ja que les regles de Debian prohibeixen carregar components externs durant el procés de construcció.

font: https://lwn.net/


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Qtkk va dir

    S'ha anat de les mans això de la fragmentació de frameworks i biblioteques en ECMAscript.
    Bon article.