Debian и Fedora се опитват да се справят с проблема със зависимостите

Линукс дистрибуциите са изправени пред проблема с нарастващите зависимости от проектите, въпреки че броят на зависимостите за Python, Perl и Ruby код се запазва В разумни граници проектите на JavaScript практикуват разделяне на много малки библиотеки, често изпълняващи проста функция.

Хранилището на NPM вече има над един милион пакета и типични приложения връзка към стотици зависимости, които от своя страна имат свои собствени зависимости, което затруднява поддръжката и разпространението на традиционни пакети с JavaScript приложения в Linux дистрибуциите.

Поради тясното преплитане на зависимостите на библиотеките на JavaScript, актуализиране на всеки пакет с такива библиотеки в дистрибуция може да счупи други пакети.

Обвързването на версията изостря проблема: Една библиотека може да изисква една версия на зависимост да работи стабилно, а друга може да изисква друга.

Много проекти изискват да работят най-новите версии на библиотеките, които не винаги отговарят на изискванията за стабилност на дистрибуцията (непрекъснатото развитие се практикува в екосистемата Node.js, като се използват най-новите версии на рамки и дистрибуцията се нуждае от подкрепа в продължение на няколко години).

Опити да се поправят версии на пакета само в дистрибуцията водят до увеличаване на остарелите версии в хранилището, които не са актуализирани от години. Прекъсването на поддръжката за един пакет влияе неблагоприятно на много други пакети и създава още повече проблеми.

Освен това, лкръстосани зависимости водят до факта, че много библиотеки на Node.js става невъзможно да се деинсталира от систематакоето от своя страна ви пречи да деинсталирате други програми Node.js.

За да се справи с тази ситуация, проектът Fedora наскоро одобри план за спиране на формирането по подразбиране на отделни пакети с библиотеки, използвани в проекти, базирани на Node.js.

Той реши, започвайки с Fedora 34, да доставя само базови пакети за Node.js с интерпретатор, заглавки, първични библиотеки, двоични файлове и основни инструменти за управление на пакети (NPM, прежда).

В приложенията за хранилища на Fedora, които използват Node.js, разрешено е вграждането на всички съществуващи зависимости в пакет, без разделяне и разделяне на библиотеките, използвани в отделни пакети.

Вграждането на библиотеки ще се отърве от малкия безпорядък на пакети, ще опрости поддръжката на пакетите (преди това поддържащият е прекарвал повече време в преглед и тестване на стотици пакети с библиотеки, отколкото в основния пакет с програмата), ще спести инфраструктурата от конфликти на библиотеките и разрешаване на проблеми с връзките към библиотечните версии (поддържащите ще включват тествани и тествани версии в пакета).

Недостатъкът на интеграцията ще бъде усложняването на процеса на внасяне на корекции към уязвимости в библиотеките, което ще изисква координирана работа на поддържащите всички пакети, които включват уязвимата библиотека. Има опасност пакетът да забрави да актуализира уязвима вградена библиотека и пакетът да остане незабелязан.

Разработчиците на Debian също обсъждат преминаването към подобен модел на интеграция на зависимостта на пакета. В допълнение към Node.js, дискусията засяга създаването на пакети за платформата Kubernetes и проекти в езиците PHP и Go, за които има тенденция да се разделят на малки зависимости. Все още не е взето решение, но се надяваме, че с времето проблемът само ще се влоши и рано или късно проектът ще бъде принуден да направи нещо.

Уеб интерфейсът gsa (Greenbone Security Assistant) за скенера за сигурност на gvm (Greenbone Vulnerability Management) е посочен като пример за проблемите, които имат поддържащите пакети.

Изпратената от Debian версия на gsa се оказа несъвместима с по-новите версии на gvm, но не беше възможно да се актуализира gsa до текущата версия, тъй като съдържа значителни промени и използва npm за изтегляне на необходимите библиотеки Node.js.

Исканите библиотеки са твърде много и изискват създаването на нови пакети в Debian, за да може някой да ги поддържа, тъй като правилата на Debian забраняват зареждането на външни компоненти по време на процеса на изграждане.

Fuente: https://lwn.net/


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   qtkk каза той

    Тази фрагментация на рамки и библиотеки в ECMAscript излезе извън контрол.
    Добра статия.