Sinusubukan nina Debian at Fedora na tugunan ang problema sa mga dependency

Nahaharap sa mga pamamahagi ng Linux ang problema ng pagdaragdag ng mga dependency ng mga proyekto, bagaman ang bilang ng mga dependency para sa Python, Perl at Ruby code ay itinatago Sa loob ng makatuwirang mga limitasyon, nagsasanay ang mga proyekto ng JavaScript sa paghahati sa napakaliit na aklatan, na madalas na gumaganap ng isang simpleng pag-andar.

Ang imbakan ng NPM ay mayroon nang higit sa isang milyong mga pakete at tipikal na mga aplikasyon link sa daan-daang mga dependency, na siya namang may kani-kanilang mga dependency, na ginagawang mahirap mapanatili at ipamahagi ang mga tradisyunal na pakete sa mga aplikasyon ng JavaScript sa mga pamamahagi ng Linux.

Dahil sa mahigpit na pagkakaugnay ng mga dependency sa library ng JavaScript, pag-update ng anumang pakete sa mga nasabing aklatan sa isang pamamahagi maaari nitong masira ang iba pang mga pakete.

Ang mga bindings ng bersyon ay nagpapalala ng problema: Ang isang silid-aklatan ay maaaring mangailangan ng isang bersyon ng isang dependency upang magpatakbo ng matatag, at ang isa pa ay maaaring mangailangan ng isa pa.

Maraming mga proyekto ang nangangailangan ng pinakabagong mga bersyon ng mga aklatan upang gumana, na hindi palaging natutugunan ang mga kinakailangan sa katatagan ng pamamahagi (patuloy na pag-unlad ay isinasagawa sa ecode ng Node.js gamit ang pinakabagong mga bersyon ng mga balangkas, at ang pamamahagi ay nangangailangan ng suporta sa loob ng maraming taon).

Mga pagtatangka upang ayusin ang mga bersyon ng package sa pamamahagi lamang humantong sa isang pagtaas sa hindi napapanahong mga bersyon sa lalagyan na hindi na-update ng maraming taon. Ang pagkagambala sa pagpapanatili para sa isang pakete ay hindi nakakaapekto sa maraming iba pang mga pakete at lumilikha ng mas maraming mga problema.

Bukod dito, lmga dependency sa krus humantong sa ang katunayan na maraming mga aklatan ng Ang Node.js ay naging imposibleng mag-uninstall mula sa system, na kung saan, pinipigilan ang pag-uninstall ng iba pang mga programa ng Node.js.

Upang harapin ang sitwasyong ito, inaprubahan kamakailan ng proyekto ng Fedora ang isang plano upang ihinto ang default na pagbuo ng magkakahiwalay na mga pakete sa mga aklatan na ginamit sa mga proyekto na nakabatay sa Node.js.

Napagpasyahan niya, na nagsisimula sa Fedora 34, na ibigay lamang ang mga base packages para sa Node.js na may interpreter, header, pangunahing aklatan, binary, at mga pangunahing tool sa pamamahala ng package (NPM, yarn).

Sa mga aplikasyon ng repository ng Fedora na gumagamit ng Node.js, pinapayagan na i-embed ang lahat ng mayroon nang mga dependency sa isang pakete, nang hindi hinahati at pinaghihiwalay ang mga aklatan na ginamit sa magkakahiwalay na mga pakete.

Ang pag-embed ng mga aklatan ay makakaalis sa maliit na kalat ng package, pinapasimple ang pagpapanatili ng package (dati, ang nagpapanatili ay gumugol ng mas maraming oras sa pagsusuri at pagsubok ng daan-daang mga pakete sa mga aklatan kaysa sa pangunahing pakete kasama ang programa), makatipid ng mga imprastraktura mula sa mga salungatan ng mga aklatan at lutasin ang mga isyu sa pag-link sa mga bersyon ng silid-aklatan (isasama ng mga nagpapanatili ang mga nasubukan at nasubok na mga bersyon sa pakete).

Ang kabiguan ng pagsasama ay magiging komplikasyon ng proseso ng pagdadala ng mga pagwawasto sa mga kahinaan sa mga silid-aklatan, na mangangailangan ng isang pinag-ugnay na gawain ng mga nagpapanatili ng lahat ng mga pakete na kasama ang mahina na silid-aklatan. May panganib na makalimutan ng isang pakete na mag-update ng isang mahina na built-in na aklatan at hindi mapapansin ang package.

Ang mga developer ng Tinatalakay din ni Debian ang paglipat sa isang katulad na modelo ng pagsasama ng dependency ng package. Bilang karagdagan sa Node.js, ang talakayan ay nakakaapekto sa paglikha ng mga pakete para sa platform ng Kubernetes at mga proyekto sa mga wika ng PHP at Go, kung saan may pagkahilig na hatiin sa maliit na mga dependency. Wala pang napagpasyahan, ngunit inaasahan na sa paglipas ng panahon ay lalala lang ang problema at maya maya lamang ay mapipilitan ang proyekto na gumawa ng isang bagay.

Ang gsa (Greenbone Security Assistant) na web interface para sa gvm (Greenbone Vulnerability Management) na scanner ng seguridad ay binanggit bilang isang halimbawa ng mga problema na mayroon ang mga tagapanatili ng package.

Ang bersyon ng gsa na ipinadala ng Debian ay naging hindi tugma sa mga mas bagong bersyon ng gvm, ngunit hindi posible na i-update ang gsa sa kasalukuyang bersyon dahil naglalaman ito ng mga makabuluhang pagbabago at gumagamit ng npm upang mai-download ang kinakailangang mga aklatan ng Node.js.

Ang hiniling na mga silid-aklatan ay masyadong maraming at nangangailangan ng paglikha ng mga bagong pakete sa Debian para sa isang tao upang mapanatili ang mga ito, tulad ng mga patakaran ng Debian na ipinagbabawal ang pag-load ng mga panlabas na bahagi sa proseso ng pagbuo.

Fuente: https://lwn.net/


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   qtkk dijo

    Ang pagkakawatak-watak ng mga balangkas at aklatan sa ECMAscript ay wala sa kamay.
    Magandang artikulo.