Debian und Fedora versuchen, das Abhängigkeitsproblem anzugehen

Linux-Distributionen stehen vor dem Problem zunehmender Abhängigkeiten der Projekte, obwohl Die Anzahl der Abhängigkeiten für Python-, Perl- und Ruby-Code wird beibehalten In angemessenen Grenzen üben JavaScript-Projekte die Aufteilung in sehr kleine Bibliotheken und führen häufig eine einfache Funktion aus.

Das NPM-Repository verfügt bereits über eine Million Pakete und typische Anwendungen Link zu Hunderten von AbhängigkeitenDies hat wiederum ihre eigenen Abhängigkeiten, was es schwierig macht, herkömmliche Pakete mit JavaScript-Anwendungen auf Linux-Distributionen zu verwalten und zu verteilen.

Aufgrund der engen Verflechtung der Abhängigkeiten von JavaScript-Bibliotheken kann jedes Paket mit solchen Bibliotheken in einer Distribution aktualisiert werden es kann andere Pakete brechen.

Versionsbindungen verschärfen das Problem: Für eine Bibliothek ist möglicherweise eine Version einer Abhängigkeit erforderlich, um stabil zu laufen, für eine andere möglicherweise eine andere.

Für viele Projekte sind die neuesten Versionen der Bibliotheken erforderlich. Diese erfüllen nicht immer die Stabilitätsanforderungen der Distribution (die kontinuierliche Entwicklung wird im Node.js-Ökosystem unter Verwendung der neuesten Versionen von Frameworks praktiziert, und die Distribution benötigt Unterstützung für mehrere Jahre).

Versuche, Paketversionen nur in der Distribution zu reparieren führen zu einer Zunahme veralteter Versionen im Repository, die seit Jahren nicht mehr aktualisiert wurden. Eine Unterbrechung der Wartung eines Pakets wirkt sich nachteilig auf viele andere Pakete aus und führt zu noch mehr Problemen.

Darüber hinaus lAbhängigkeiten überkreuzen führen dazu, dass viele Bibliotheken von Node.js können nicht mehr vom System deinstalliert werdenDies verhindert wiederum, dass Sie andere Node.js-Programme deinstallieren.

Um dieser Situation zu begegnen, hat das Fedora-Projekt kürzlich einen Plan genehmigt, um die Standardbildung separater Pakete mit Bibliotheken zu stoppen, die in Node.js-basierten Projekten verwendet werden.

Beginnend mit Fedora 34 beschloss er, nur Basispakete für Node.js mit einem Interpreter, Headern, Primärbibliotheken, Binärdateien und grundlegenden Tools zur Paketverwaltung (NPM, Garn) bereitzustellen.

In Fedora-Repository-Anwendungen, die Node.js verwenden, Es ist zulässig, alle vorhandenen Abhängigkeiten in ein Paket einzubetten, ohne die in separaten Paketen verwendeten Bibliotheken zu teilen und zu trennen.

Durch das Einbetten von Bibliotheken wird die Unordnung kleiner Pakete beseitigt, die Paketwartung vereinfacht (zuvor hat der Betreuer mehr Zeit damit verbracht, Hunderte von Paketen mit Bibliotheken zu überprüfen und zu testen als im Hauptpaket mit dem Programm) und die Infrastruktur vor Konflikten geschützt von Bibliotheken und Beheben von Problemen beim Verknüpfen mit Bibliotheksversionen (Betreuer werden getestete und produktionstestete Versionen in das Paket aufnehmen).

Der Nachteil der Integration wird die Komplikation des Korrekturprozesses sein Sicherheitslücken in den Bibliotheken, die eine koordinierte Arbeit der Betreuer aller Pakete erfordern, die die anfällige Bibliothek enthalten. Es besteht die Gefahr, dass ein Paket vergisst, eine anfällige integrierte Bibliothek zu aktualisieren, und das Paket unbemerkt bleibt.

Die Entwickler von Debian diskutiert auch den Wechsel zu einem ähnlichen Paketabhängigkeits-Integrationsmodell. Neben Node.js werden in der Diskussion Pakete für die Kubernetes-Plattform und Projekte in den Sprachen PHP und Go erstellt, für die die Tendenz besteht, sich in kleine Abhängigkeiten zu unterteilen. Es wurde noch keine Entscheidung getroffen, aber es ist zu hoffen, dass sich das Problem mit der Zeit nur verschlimmert und das Projekt früher oder später zu etwas gezwungen wird.

Die gsa-Weboberfläche (Greenbone Security Assistant) für den gvm-Sicherheitsscanner (Greenbone Vulnerability Management) wird als Beispiel für die Probleme angeführt, die Paketbetreuer haben.

Die von Debian gelieferte Version von gsa erwies sich als nicht kompatibel mit neueren Versionen von gvm, aber es war nicht möglich, gsa auf die aktuelle Version zu aktualisieren, da sie wesentliche Änderungen enthält und npm zum Herunterladen der erforderlichen Node.js-Bibliotheken verwendet.

Die angeforderten Bibliotheken sind zu viele und erfordern die Erstellung neuer Pakete in Debian, damit jemand sie verwalten kann, da die Debian-Regeln das Laden externer Komponenten während des Erstellungsprozesses verbieten.

Quelle: https://lwn.net/


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   qtkk sagte

    Diese Fragmentierung von Frameworks und Bibliotheken in ECMAscript ist außer Kontrolle geraten.
    Guter Artikel.