Eu uso o Linux há algum tempo, e sempre me perguntei como o Windows era capaz de lidar com as deficiências de programas como apt-get , aptitude , Pacman , yum e outros gerenciadores de pacotes. Às vezes, meu gerente de pacotes dizia que essa versão dessa biblioteca era necessária para este pacote ou que haveria algum conflito.
Como o Windows lida com tudo isso?
Respostas:
Não faz. A menos que falemos do .NET, que solicita a instalação da versão X do framework de acordo com o compilador.
Tudo o resto gera um erro. Com sorte, você consegue
missing dll xxxx.dll
. Embora, a maioria dos instaladores tenha as bibliotecas necessárias incluídas para executar o software.fonte
Editar 04/04/2014: Hey OP, veja o que foi lançado hoje:
http://blogs.technet.com/b/windowsserver/archive/2014/04/03/windows-management-framework-v5-preview.aspx
Eu só queria expandir um pouco a resposta aceita, porque é um pouco esparsa nos detalhes. A resposta de Filipe não faz menção das estratégias que o Windows realmente faz uso para a resolver problemas ou dependência programa mitigar, como o armazenamento de componentes (WinSxS), o cache de assemblagem global, o sistema MSI, etc. Mas, por outro lado ele é basicamente bem no sinta que é responsabilidade do desenvolvedor incluir qualquer biblioteca personalizada no aplicativo e verificar a existência de dependências antes de confirmar a transação de instalação.
O Windows é menos modular que o Linux, que possui pontos positivos e negativos. Por outro lado, o Windows é mais monolítico, o que significa que comparativamente menos componentes do sistema operacional são removíveis ou opcionais, como no Linux. (Embora o Windows esteja lentamente melhorando sobre isso.)
Mas, no lado positivo, isso significa que os desenvolvedores podem fazer muito mais suposições sobre quais bibliotecas um usuário já terá presente em sua máquina. E várias versões dessas bibliotecas, uma vez instaladas, serão armazenadas lado a lado no armazenamento de componentes, para que você não tenha mais o App1 latindo sobre a necessidade de crapDLL.dll e o App2 latindo sobre a necessidade de uma versão diferente do crapDLL.dll ao mesmo tempo. hora, etc.
fonte
No Windows, cabe ao autor do software fornecer versões para suas bibliotecas. O Windows possui alguns recursos para ajudar nisso.
Os serviços Windows Installer e Trusted Installer que interagem com os programas de instalação (.msi). Há também alguma tecnologia de suporte chamada Aplicativos Isolados e Conjuntos Lado a Lado que ajudam a resolver conflitos de versão.
Para aplicativos de estrutura .NET, há o Global Assembly Cache, Strong-Named Assemblies e os principais Manifests.
No Windows 8 e 8.1, há a Windows App Store junto com a Windows Runtime Library (substituição da API do win32).
editar: No centro da maioria dessas tecnologias estão manifestos de montagem, arquivos incorporados que fornecem números de versão, autores, montagens dependentes e suas versões, entre outros dados.
fonte
As outras respostas apontaram corretamente que o gerenciamento de pacotes e o SO são idéias separadas, mas não mencionaram uma solução.
O sistema de gerenciamento de pacotes mais semelhante ao apt-get ou yum no Windows seria atualmente o Chocolatey . Ele permite que as pessoas instalem / desinstalem pacotes (scripts msi, exe, powershell) e esses pacotes podem conter informações sobre suas dependências que podem ser resolvidas automaticamente pelo Chocolatey.
O pacote geralmente contém um link para os binários e scripts para gerenciar o processo de instalação. O pacote também pode conter os binários ou outros arquivos necessários (as dependências devem estar em um pacote separado). O Chocolatey também pode usar sistemas externos de gerenciamento de pacotes, como o Web Platform Installer da Microsoft , Ruby Gems, Python e assim por diante.
fonte
Pelo que entendi, as únicas dependências tratadas pelo Windows são as bibliotecas específicas da Microsoft. Se você instalar, por exemplo, um programa de código aberto no Windows como o Blender, ele terá as bibliotecas libavcodec e ffmpeg em seus próprios arquivos DLL separados e, se você instalar, digamos, OpenShot, ele instalará sua própria cópia do libavcodec em seu próprio diretório e elas podem ser versões completamente diferentes. Isso pode ser um pesadelo ao desinstalar o software para limpar o lixo deixado para trás, além de ocupar muito mais espaço em disco com redundância de biblioteca.
fonte