Debian i Fedora pokušavaju riješiti problem zavisnosti

Linux distribucije suočavaju se s problemom povećanja zavisnosti projekata zadržava se broj zavisnosti za Python, Perl i Ruby kod U razumnim granicama, JavaScript projekti uvježbavaju podjelu na vrlo male biblioteke, često izvršavajući jednostavnu funkciju.

NPM spremište već ima preko milion paketa i tipične aplikacije veza do stotina zavisnosti, koji zauzvrat imaju svoje ovisnosti, što otežava održavanje i distribuciju tradicionalnih paketa s JavaScript aplikacijama na Linux distribucijama.

Zbog uskog preplitanja zavisnosti JavaScript biblioteka, ažuriranje bilo kojeg paketa s takvim bibliotekama u distribuciji može razbiti druge pakete.

Vezi s verzijama pogoršavaju problem: jedna biblioteka može zahtijevati da jedna verzija zavisnosti radi stabilno, a druga može zahtijevati drugu.

Mnogi projekti zahtijevaju najnovije verzije biblioteka, koji ne ispunjavaju uvijek zahtjeve za stabilnošću distribucije (kontinuirani razvoj prakticira se u ekosustavu Node.js koristeći najnovije verzije okvira, a distribuciji je potrebna podrška nekoliko godina).

Pokušaji popravljanja verzija paketa samo u distribuciji dovesti do povećanja zastarjelih verzija u spremištu koje se godinama nije ažuriralo. Prekid održavanja jednog paketa negativno utječe na mnoge druge pakete i stvara još više problema.

Nadalje, lunakrsne zavisnosti dovode do činjenice da su mnoge biblioteke Node.js je nemoguće deinstalirati iz sistema, što vas, pak, sprečava da deinstalirate druge programe Node.js.

Da bi se pozabavio tim problemom, Fedora projekt nedavno je odobrio plan za zaustavljanje zadanog formiranja zasebnih paketa s bibliotekama koje se koriste u projektima zasnovanima na Node.js.

Odlučio je, počevši od Fedore 34, da isporuči samo osnovne pakete za Node.js s interpretatorom, zaglavljima, primarnim bibliotekama, binarnim datotekama i osnovnim alatima za upravljanje paketima (NPM, pređa).

U Fedora aplikacijama spremišta koje koriste Node.js, Dopušteno je ugrađivati ​​sve postojeće zavisnosti u paket, bez dijeljenja i odvajanja knjižnica koje se koriste u zasebnim paketima.

Ugrađivanjem biblioteka riješit će se nereda u malim paketima, pojednostaviti održavanje paketa (prethodno je održavač proveo više vremena pregledavajući i testirajući stotine paketa s bibliotekama nego u glavnom paketu s programom), spasivši infrastrukturu od sukoba biblioteka i riješiti probleme s povezivanjem na verzije biblioteka (održavači će u paket uključiti testirane i proizvodno testirane verzije).

Loša strana integracije bit će kompliciranje procesa unošenja ispravki ranjivosti u bibliotekama, što će zahtijevati koordinirani rad održavatelja svih paketa koji uključuju ranjivu knjižnicu. Postoji opasnost da paket zaboravi ažurirati ranjivu ugrađenu biblioteku i paket ostane neprimijećen.

Programeri od Debian također raspravlja o prelasku na sličan model integracije ovisnosti paketa. Pored Node.js, rasprava se dotiče i stvaranja paketa za platformu Kubernetes i projekata na PHP i Go jezicima, za koje postoji tendencija podjele na male zavisnosti. Još nije donesena nikakva odluka, ali postoji nada da će se s vremenom problem samo pogoršati i prije ili kasnije projekt će biti prisiljen učiniti nešto.

Kao primjer problema koje imaju održavači paketa navodi se gsa (Greenbone Security Assistant) web sučelje za gvm (Greenbone Vulnerability Management) sigurnosni skener.

Ispostavilo se da je verzija gsa isporučena uz Debian nespojiva s novijim verzijama gvm-a, ali nije bilo moguće ažurirati gsa na trenutnu verziju jer sadrži značajne promjene i koristi npm za preuzimanje potrebnih Node.js biblioteka.

Zatraženih knjižnica je previše i zahtijevaju stvaranje novih paketa u Debianu da bi ih netko mogao održavati, jer Debianova pravila zabranjuju učitavanje vanjskih komponenti tijekom procesa izrade.

Izvor: https://lwn.net/


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   qtkk rekao je

    Ova fragmentacija okvira i biblioteka u ECMAscriptu izmakla je kontroli.
    Dobar članak.