J'ai utilisé Linux pendant un certain temps et je me suis toujours demandé comment Windows pouvait gérer les dépendances de programmes comme apt-get , aptitude , Pacman , yum et d'autres gestionnaires de paquets. Parfois, mon gestionnaire de packages me disait que cette version de cette bibliothèque était nécessaire pour ce package ou qu'il y aurait un conflit.
Comment Windows gère-t-il tout cela?
Réponses:
Ce n'est pas le cas. Sauf si nous parlons de .NET qui vous demande d'installer la version X du framework en fonction du compilateur.
Tout le reste génère simplement une erreur. Avec de la chance, vous obtenez
missing dll xxxx.dll
. Cependant, la plupart des installateurs disposeront des bibliothèques requises pour exécuter le logiciel.la source
Edit 04/04/2014: Hey OP, regardez ce qui vient d'être publié aujourd'hui:
http://blogs.technet.com/b/windowsserver/archive/2014/04/03/windows-management-framework-v5-preview.aspx
Je voulais juste développer un peu la réponse acceptée, parce que les détails sont un peu clairsemés. La réponse de Filipe ne fait aucune mention des stratégies que Windows fait ne utiliser pour résoudre ou atténuer les problèmes de dépendance du programme, comme le magasin composant (WinSxS,) le cache d'assemblage global, le système MSI, etc. Mais d'autre part , il est essentiellement en plein sentir qu'il est de la responsabilité du développeur d'inclure des bibliothèques personnalisées avec l'application et de vérifier l'existence de dépendances avant de s'engager dans la transaction d'installation.
Windows est moins modulaire que Linux, qui a des points positifs et négatifs. En revanche, Windows est plus monolithique, ce qui signifie que relativement moins de composants du système d'exploitation sont amovibles ou facultatifs comme sous Linux. (Bien que Windows s'améliore lentement à ce sujet.)
Mais du côté positif, cela signifie que les développeurs sont capables de faire beaucoup plus d'hypothèses sur les bibliothèques qu'un utilisateur aura déjà présentes sur sa machine. Et diverses versions de ces bibliothèques, une fois installées, seront stockées côte à côte dans le magasin de composants, de sorte que vous n'aurez plus les aboiements App1 à propos de besoin de crapDLL.dll et App2 aboiements à propos du besoin d'une version différente de crapDLL.dll en même temps. temps, etc.
la source
Sous Windows, il appartient à l'auteur du logiciel de fournir les versions de ses bibliothèques. Windows dispose de quelques fonctionnalités pour vous aider.
Windows Installer et les services Trusted Installer qui interagissent avec les programmes d'installation (.msi). Il existe également des technologies de support appelées applications isolées et assemblages côte à côte qui aident à trier les conflits de version.
Pour les applications de framework .NET, il y a le Global Assembly Cache, les Strong-Named Assemblies et les principaux manifestes.
Dans Windows 8 et 8.1, il y a le Windows App Store avec la bibliothèque Windows Runtime (remplacement de l'API win32).
edit: Au cœur de la plupart de ces technologies se trouvent des manifestes d'assembly, des fichiers intégrés qui fournissent des numéros de version, des auteurs, des assemblys dépendants et leurs versions, entre autres données.
la source
Les autres réponses ont correctement indiqué que la gestion des packages et le système d'exploitation sont des idées distinctes mais n'ont pas mentionné de solution.
Le système de gestion de paquets le plus similaire à apt-get ou yum sous Windows serait actuellement Chocolatey . Il permet aux gens d'installer / désinstaller des packages (msi, exe, scripts powershell,) et ces packages peuvent contenir des informations sur leurs dépendances qui peuvent être automatiquement résolues par Chocolatey.
Le package contient généralement un lien vers les fichiers binaires et les scripts pour gérer le processus d'installation. Le package peut également contenir les fichiers binaires ou tout autre fichier requis (les dépendances doivent être dans un package séparé). Chocolatey peut également utiliser des systèmes de gestion de packages externes comme le programme d'installation de la plate-forme Web de Microsoft , Ruby Gems, Python, etc.
la source
D'après ce que je comprends, les seules dépendances gérées par Windows sont des bibliothèques spécifiques à Microsoft. Si vous installez, par exemple, un programme open source dans Windows comme Blender, il aura les bibliothèques libavcodec et ffmpeg dans ses propres fichiers dll séparés, et si vous installez ensuite, par exemple, OpenShot, il installera sa propre copie du libavcodec dans son propre répertoire, et il peut s'agir de versions complètement différentes. Cela peut être un cauchemar lors de la désinstallation de logiciels pour nettoyer les fichiers inutiles, et cela prend également beaucoup plus d'espace disque avec la redondance de la bibliothèque.
la source