Debian e Fedora stanno cercando di risolvere il problema delle dipendenze

Le distribuzioni Linux affrontano il problema dell'aumento delle dipendenze dei progetti, sebbene il numero di dipendenze per il codice Python, Perl e Ruby viene mantenuto Entro limiti ragionevoli, i progetti JavaScript si esercitano a dividersi in librerie molto piccole, spesso eseguendo una semplice funzione.

Il repository NPM ha già oltre un milione di pacchetti e applicazioni tipiche collegamento a centinaia di dipendenze, che a loro volta hanno le proprie dipendenze, rendendo difficile mantenere e distribuire pacchetti tradizionali con applicazioni JavaScript sulle distribuzioni Linux.

A causa dello stretto intreccio delle dipendenze della libreria JavaScript, l'aggiornamento di qualsiasi pacchetto con tali librerie in una distribuzione può rompere altri pacchetti.

Le associazioni di versione aggravano il problema: una libreria potrebbe richiedere una versione di una dipendenza per essere stabile e un'altra potrebbe richiederne un'altra.

Molti progetti richiedono le ultime versioni delle librerie per funzionare, che non sempre soddisfano i requisiti di stabilità della distribuzione (lo sviluppo continuo è praticato nell'ecosistema Node.js utilizzando le ultime versioni dei framework e la distribuzione necessita di supporto per diversi anni).

Tenta di correggere le versioni dei pacchetti nella sola distribuzione portare ad un aumento delle versioni obsolete nel repository che non viene aggiornato da anni. L'interruzione della manutenzione per un pacchetto influisce negativamente su molti altri pacchetti e crea ancora più problemi.

Inoltre, ldipendenze incrociate portare al fatto che molte biblioteche di Node.js diventa impossibile disinstallare dal sistema, che, a sua volta, ti impedisce di disinstallare altri programmi Node.js.

Per far fronte a questa situazione, il progetto Fedora ha recentemente approvato un piano per fermare la formazione predefinita di pacchetti separati con le librerie utilizzate nei progetti basati su Node.js.

Decise, a partire da Fedora 34, di fornire solo pacchetti di base per Node.js con un interprete, intestazioni, librerie primarie, binari e strumenti di gestione dei pacchetti di base (NPM, filato).

Nelle applicazioni di repository Fedora che utilizzano Node.js, è consentito incorporare tutte le dipendenze esistenti in un pacchetto, senza dividere e separare le librerie usate in pacchetti separati.

L'incorporamento delle librerie eliminerà l'ingombro di piccoli pacchetti, semplificherà la manutenzione dei pacchetti (in precedenza il manutentore passava più tempo a rivedere e testare centinaia di pacchetti con le librerie che nel pacchetto principale con il programma), salva l'infrastruttura dai conflitti delle librerie e risolvere i problemi con il collegamento alle versioni della libreria (i manutentori includeranno versioni testate e testate in produzione nel pacchetto).

Lo svantaggio dell'integrazione sarà la complicazione del processo di apportare correzioni vulnerabilità nelle librerie, che richiederà un lavoro coordinato dei manutentori di tutti i pacchetti che includono la libreria vulnerabile. Esiste il pericolo che un pacchetto dimentichi di aggiornare una libreria incorporata vulnerabile e il pacchetto passi inosservato.

Gli sviluppatori di Debian sta anche discutendo il passaggio a un modello di integrazione delle dipendenze dei pacchetti simile. Oltre a Node.js, la discussione tocca la creazione di pacchetti per la piattaforma Kubernetes e progetti nei linguaggi PHP e Go, per i quali si tende a dividersi in piccole dipendenze. Nessuna decisione è stata ancora presa, ma si spera che nel tempo il problema possa solo peggiorare e prima o poi il progetto sarà costretto a fare qualcosa.

L'interfaccia web gsa (Greenbone Security Assistant) per lo scanner di sicurezza gvm (Greenbone Vulnerability Management) è citata come esempio dei problemi che hanno i manutentori di pacchetti.

La versione di gsa distribuita da Debian si è rivelata incompatibile con le versioni più recenti di gvm, ma non è stato possibile aggiornare gsa alla versione corrente poiché contiene modifiche significative e utilizza npm per scaricare le librerie Node.js richieste.

Le librerie richieste sono troppe e richiedono la creazione di nuovi pacchetti in Debian perché qualcuno le mantenga, poiché le regole Debian proibiscono il caricamento di componenti esterni durante il processo di compilazione.

fonte: https://lwn.net/


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   qtkk suddetto

    Questa frammentazione di framework e librerie in ECMAscript è sfuggita di mano.
    Buon articolo.