Ich habe Linux eine ganze Weile benutzt und mich immer gefragt, wie Windows mit den Programmabhängigkeiten wie apt-get , aptitude , Pacman , yum und anderen Paketmanagern umgehen kann . Manchmal sagte mir mein Paketmanager, dass diese Version dieser Bibliothek für dieses Paket benötigt würde oder dass es einen Konflikt geben würde.
Wie geht Windows mit all diesen Dingen um?
Antworten:
Das tut es nicht. Es sei denn, es handelt sich um .NET, bei dem Sie aufgefordert werden, die Framework-Version X gemäß dem Compiler zu installieren.
Alles andere wirft nur einen Fehler. Mit etwas Glück bekommen Sie
missing dll xxxx.dll
. Bei den meisten Installationsprogrammen sind jedoch die erforderlichen Bibliotheken enthalten, um die Software auszuführen.quelle
Edit 04.04.2014: Hey OP, schau dir an, was gerade heute veröffentlicht wurde:
http://blogs.technet.com/b/windowsserver/archive/2014/04/03/windows-management-framework-v5-preview.aspx
Ich wollte nur die akzeptierte Antwort etwas näher erläutern, da es ein wenig spärlich um Details geht. In der Antwort von Filipe wird nicht erwähnt, mit welchen Strategien Windows tatsächlich Probleme mit der Programmabhängigkeit löst oder mindert, wie z. B. der Komponentenspeicher (WinSxS), der globale Assemblycache, das MSI-System usw. Auf der anderen Seite hat er im Grunde recht Es liegt in der Verantwortung des Entwicklers, benutzerdefinierte Bibliotheken in die App einzubeziehen und das Vorhandensein von Abhängigkeiten zu überprüfen, bevor Sie die Installationstransaktion ausführen.
Windows ist weniger modular als Linux, das positive und negative Aspekte aufweist. Auf der anderen Seite ist Windows monolithischer, was bedeutet, dass vergleichsweise weniger Komponenten des Betriebssystems austauschbar oder optional sind, wie in Linux. (Obwohl Windows langsam besser wird.)
Auf der anderen Seite bedeutet dies, dass Entwickler viel mehr Annahmen darüber treffen können, welche Bibliotheken ein Benutzer bereits auf seinem Computer hat. Und verschiedene Versionen dieser Bibliotheken werden nach der Installation nebeneinander im Komponentenspeicher gespeichert, sodass App1 nicht mehr über die Notwendigkeit von crapDLL.dll und App2 über die Notwendigkeit einer anderen Version von crapDLL.dll bellt Zeit usw.
quelle
In Windows ist es Sache des Softwareautors, die Versionsverwaltung für seine Bibliotheken bereitzustellen. Windows bietet hierfür einige Möglichkeiten.
Der Windows Installer- und der Trusted Installer-Dienst, die mit Installationsprogrammen (.msi) interagieren. Es gibt auch eine unterstützende Technologie namens "Isolierte Anwendungen" und "Side-by-Side-Assemblys", mit deren Hilfe Versionskonflikte behoben werden können.
Für .NET Framework-Anwendungen gibt es den globalen Assemblycache, Assemblys mit starkem Namen und die zentralen Manifeste.
In Windows 8 und 8.1 gibt es den Windows App Store zusammen mit der Windows Runtime Library (Win32-API-Ersatz).
Bearbeiten: Der Kern der meisten dieser Technologien sind Assembly-Manifeste, eingebettete Dateien, die unter anderem Versionsnummern, Autoren, abhängige Assemblys und deren Versionen enthalten.
quelle
In den anderen Antworten wurde richtig darauf hingewiesen, dass Paketverwaltung und Betriebssystem getrennte Ideen sind, ohne jedoch eine Lösung zu nennen.
Das Paketverwaltungssystem, das apt-get oder yum unter Windows am ähnlichsten ist, ist derzeit Chocolatey . Es ermöglicht Benutzern das Installieren / Deinstallieren von Paketen (msi, exe, Powershell-Skripte). Diese Pakete können Informationen zu ihren Abhängigkeiten enthalten, die von Chocolatey automatisch aufgelöst werden können.
Das Paket enthält normalerweise einen Link zu den Binärdateien und Skripten, um den Installationsprozess zu verwalten. Das Paket kann auch die Binärdateien oder andere erforderliche Dateien enthalten (Abhängigkeiten sollten sich in einem separaten Paket befinden). Chocolatey kann auch externe Paketverwaltungssysteme wie Microsoft Web Platform Installer , Ruby Gems, Python usw. verwenden.
quelle
Soweit ich weiß, sind die einzigen Abhängigkeiten, die von Windows behandelt werden, Microsoft-spezifische Bibliotheken. Wenn Sie beispielsweise ein Open-Source-Programm wie Blender unter Windows installieren, werden die Bibliotheken libavcodec und ffmpeg in separaten DLL-Dateien gespeichert. Wenn Sie dann beispielsweise OpenShot installieren, wird eine eigene Kopie des Programms installiert libavcodec in einem eigenen Verzeichnis, und sie können völlig verschiedene Versionen sein. Dies kann ein Albtraum sein, wenn Software deinstalliert wird, um den verbleibenden Müll zu beseitigen, und es nimmt auch viel mehr Speicherplatz mit Bibliotheksredundanz in Anspruch.
quelle