Debian ja Fedora yrittävät ratkaista riippuvuusongelman

Linux-jakelut kohtaavat lisääntyvän riippuvuuden ongelman hankkeista, vaikka Python-, Perl- ja Ruby-koodien riippuvuuksien määrä säilytetään Kohtuullisissa rajoissa JavaScript-projektit harjoittavat jakamista hyvin pieniin kirjastoihin, jotka usein suorittavat yksinkertaisen toiminnon.

NPM-arkistossa on jo yli miljoona pakettia ja tyypilliset sovellukset linkki satoihin riippuvuuksiin, joilla puolestaan ​​on omat riippuvuutensa, mikä vaikeuttaa perinteisten JavaScript-sovellusten pakettien ylläpitoa ja jakelua Linux-jakeluissa.

Koska JavaScript-kirjastoyhteydet ovat tiiviisti kietoutuneet toisiinsa, minkä tahansa paketin päivittäminen tällaisilla kirjastoilla jakelussa se voi rikkoa muita paketteja.

Versiosidonnat pahentavat ongelmaa: Yksi kirjasto voi edellyttää yhden riippuvuusversion vakaana toimimista, ja toinen voi vaatia toisen.

Monet projektit edellyttävät uusimpia kirjastojen versioita toimiakseen, jotka eivät aina täytä jakelun vakausvaatimuksia (Node.js-ekosysteemissä harjoitellaan jatkuvaa kehitystä uusimpien kehysversioiden avulla, ja jakelu tarvitsee tukea useita vuosia).

Yritykset korjata pakettiversiot pelkästään jakelussa johtaa vanhentuneiden versioiden lisääntymiseen arkistossa, jota ei ole päivitetty vuosia. Yhden paketin ylläpitohäiriöt vaikuttavat haitallisesti moniin muihin paketteihin ja aiheuttavat vielä enemmän ongelmia.

Lisäksi lrajat riippuvuudet johtaa siihen, että monet Node.js: n poistaminen järjestelmästä on mahdotontamikä puolestaan ​​estää sinua poistamasta muita Node.js-ohjelmia.

Tämän korjaamiseksi Fedora-projekti hyväksyi äskettäin suunnitelman lopettaa Node.js-pohjaisiin projekteihin käytettyjen kirjastojen erillisten pakettien oletusmuodostus.

Hän päätti toimittaa Fedora 34: stä alkaen vain Node.js: n peruspaketit tulkin, otsikoiden, ensisijaisten kirjastojen, binääritiedostojen ja peruspakettien hallintatyökalujen (NPM, lanka) avulla.

Fedora-arkistosovelluksissa, jotka käyttävät Node.js-tiedostoa, kaikki olemassa olevat riippuvuudet voidaan upottaa pakettiin jakamatta ja erottelematta erillisissä paketeissa käytettyjä kirjastoja.

Kirjastojen upottaminen poistaa pienet pakettien sekaannukset, yksinkertaistaa pakettien ylläpitoa (aiemmin ylläpitäjä käytti enemmän aikaa satojen pakettien tarkistamiseen ja testaamiseen kirjastoilla kuin ohjelman pääpaketissa), säästää infrastruktuuria konflikteilta kirjastoversioihin linkittämisen ongelmat (ylläpitäjät sisällyttävät testattuja ja tuotantotestattuja versioita pakettiin).

Integraation haittapuoli on korjausten tekemisen monimutkaisuus kirjastojen haavoittuvuuksiin, mikä edellyttää kaikkien haavoittuvaa kirjastoa sisältävien pakettien ylläpitäjien koordinoitua työtä. On olemassa vaara, että paketti unohtaa päivittää haavoittuvan sisäisen kirjaston ja paketti jää huomaamatta.

Kehittäjät Debian keskustelee myös siirtymisestä vastaavaan pakettiriippuvuuden integrointimalliin. Node.js: n lisäksi keskustelu koskee Kubernetes-alustalle tarkoitettujen pakettien luomista ja PHP- ja Go-kielten projekteja, joille on taipumus jakaa pieniksi riippuvuuksiksi. Päätöstä ei ole vielä tehty, mutta toivotaan, että ajan myötä ongelma vain pahenee ja ennemmin tai myöhemmin projekti pakotetaan tekemään jotain.

Gsa (Greenbone Vulnerability Management) -suojaskannerin gsa (Greenbone Security Assistant) -verkkoliittymä mainitaan esimerkkinä ongelmista, joita pakettien ylläpitäjillä on.

Debianin toimittama gsa-versio osoittautui yhteensopimattomaksi gvm: n uudempien versioiden kanssa, mutta gsa: n päivittäminen nykyiseen versioon ei ollut mahdollista, koska se sisältää merkittäviä muutoksia ja käyttää tarvittavia Node.js-kirjastoja npm: llä.

Pyydetyt kirjastot ovat liian monta ja vaativat uusien pakettien luomisen Debianiin, jotta joku ylläpitää niitä, koska Debianin säännöt kieltävät ulkoisten komponenttien lataamisen rakennusprosessin aikana.

lähde: https://lwn.net/


Kommentti, jätä sinun

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   qtkk dijo

    Tämä kehysten ja kirjastojen pirstaleisuus ECMAscriptissä on mennyt käsistä.
    Hyvä artikkeli.