Ich habe kürzlich erfahren, dass Debian-basierte Distributionen im Wesentlichen über eine feste Sammlung gemeinsamer Abhängigkeiten und Bibliotheken verfügen, die jede über einen Paketmanager installierte Anwendung verwenden muss.
Vergleichen Sie dies beispielsweise mit Windows, wo meiner Meinung nach jede Anwendung normalerweise ihre eigenen Abhängigkeiten bereitstellt. Daher sind bei einer Windows-Betriebssysteminstallation Instanzen derselben Abhängigkeiten/Bibliotheken mehrfach installiert und jede Anwendung muss die Aktualisierung dieser Abhängigkeiten selbst verwalten.
Ich weiß, dass einige Entwickler ihre Software so entwickeln, dass sie mit dem APT-Paketmanager kompatibel ist, aber ich kann mir vorstellen, dass es viele Anwendungen gibt, bei denen die Entwickler die Software auf die „Windows“-Art erstellt haben.
Meine Frage lautet also: Wenn die Upstream-Entwickler ihre Software mit der Absicht erstellt haben, eine große monolithische Installation mit gebündelten Abhängigkeiten zu verteilen, müssen die APT-Paketbetreuer dann den Quellcode neu schreiben, damit die Software die gemeinsame Sammlung von Abhängigkeiten statt der lokalen Abhängigkeiten verwendet?
Wenn ja, kommt dies häufig vor und ist dies eine große Aufgabe für die Paketbetreuer?
Antwort1
Meine Frage lautet also: Wenn die Upstream-Entwickler ihre Software mit der Absicht erstellt haben, eine große monolithische Installation mit gebündelten Abhängigkeiten zu verteilen, müssen die APT-Paketbetreuer dann den Quellcode neu schreiben, damit die Software die gemeinsame Sammlung von Abhängigkeiten statt der lokalen Abhängigkeiten verwendet?
Nicht unbedingt, solange die monolithische Installation nichtKonfliktmit einer vorhandenen Bibliothek oder einem vorhandenen Dateinamen. Das heißt, wenn das System bereits eine /lib/foobar
(Version 12) hat und das monolithische Paket foobar
Version 9 erfordert und bündelt, kann dieses monolithische Paket seine foobar
Version 9 nicht unter dem Dateinamen speichern /lib/foobar
, da dieser Pfadname bereits vergeben ist -- aber eskönnteverwenden /lib/foobar_v9
, oder vielleicht .../monolithic_app_dir/lib/foobar
.
Wenn ja, kommt dies häufig vor und ist dies eine große Aufgabe für die Paketbetreuer?
Ja, vorbeugen und wenn nötigAussortierungVerschiedene Ebenen der Abhängigkeitshölle gehören zu einem Großteil der Arbeit von Paketbetreuern.
Antwort2
Debian-Richtlinieist, dass Bibliotheken, Tools usw., die mit einem Programm gebündelt sind, bei der Erstellung eines Debian-Pakets davon entbündelt werden sollten. Die Debian-Richtlinie erfordert außerdem, dass Bibliotheken in mindestens ein Laufzeitpaket (z. B. libfoo-version
) und eine Entwicklungsversion mit der statischen Bibliothek und Headern (z. B. libfoo-version-dev
) aufgeteilt werden.
Was Sie auf Ihrem eigenen System tun, ist Ihre Sache, aber von jedem Debian-Entwickler (DD), der eine monolithische Anwendung verpackt, wird erwartet, dass er diese entbündelt – das heißt, er muss sich entweder auf die vorhandenen Bibliotheken in Debian verlassen oder Pakete für sie erstellen, falls sie noch nicht vorhanden sind.
Andere Distributionen haben möglicherweise andere Richtlinien, aber die meisten verlangen, dass Pakete in den offiziellen Repos entbündelt werden, da die Bündelung den Sinn der Verpackung untergräbt und es beispielsweise schwieriger macht, Sicherheitsupdates für Bibliotheken auf alle Programme anzuwenden, die eine bestimmte Bibliothek verwenden.