1

I'm a Windows user and I need to also use Linux distros heavily for work. Installing software has been so difficult with all dependency missing/version not upgraded/OS distro version unmatch.

Not that I don't appreciate the good stuff about Linux. I just want to know the reason. How is Windows handling this? Is it because Windows fat installer bundle all dependencies with it?

To be specific, let's take Ubuntu and apt. Everytime the OS upgrades, e.g. precise to trusty, dependencies break. And the workaround many times is just to keep using the old version. Of course the devs should test and make sure it's compatible with new OS version, and mark as so on repository.

4
  • 1
    Generally yes; the typical Windows program installation includes .DLL files (analogous to .so files in Linux) which are libraries the program uses. Folks are not allowed to distribute the Visual C++ libraries themselves as part of another package, which is why MS provides the VC++ Redistributable Libraries package to send alongside software that requires them.
    – DopeGhoti
    Feb 23, 2016 at 18:01
  • 9
    Hmm. Any halfway reasonable Linux distributions should be able to resolve dependencies just fine. What distribution are you using? Feb 23, 2016 at 18:04
  • 1
    I'm voting to close this question as off-topic because the direct question is about Windows packaging; and because there's not a specific UNIX/Linux packaging/dependency question to answer.
    – Jeff Schaller
    Feb 24, 2016 at 1:08
  • "Everytime the OS upgrades, e.g. precise to trusty, dependencies break" No, they don't.
    – muru
    Feb 24, 2016 at 9:47

1 Answer 1

6

The short answer is that Windows installers usually include all the necessary libraries as DLL's, which are usually installed into the same directory as the app, and are usually only useable by that one app. This means if you have two or three Windows products which use the same source library (for example, a compression library, or a GUI element), they'll all have the same DLL's installed, potentially at different versions.

That leads to bloat, and can lead to security vulnerabilities as patches may not be applied consistently to all the installed copies of the same library.

Some shared libraries do exist (obviously. the OS supplied libraries are included), in which case you need to ensure you have them installed and there's no simple built-in Windows solution to this (it's often handled by the installers themselves).

Modern Linux distributions come with package managers which should handle dependencies for any applications in the distribution's repository. That is most of the work of packaging a distribution (along with customising elements to provide consistency). For example, apt handles dependencies in Debian so you don't need to worry, as along as you're installing from the Debian repository.

If you're downloading and installing your own packages or compiling from source, then yes, you'll need to manage dependencies yourself.

6
  • 2
    Actually, apt handles dependencies, not dpkg. Feb 23, 2016 at 19:00
  • Windows installers can use assemblies which allow libraries to be shared. (But that just reduces the installed size, in the ideal case; each installer has to include its dependencies.) Feb 23, 2016 at 19:07
  • 1
    "That is most of the work of packaging a distribution": arguably for some distributions at least most of the work is ensuring license compliance... Feb 23, 2016 at 19:12
  • 1
    That's more about picking which packages to include, I was trying to infer the the work of doing the packaging is often about ensuring library consistency, etc. Feb 23, 2016 at 19:13
  • Could you elaborate a bit. E.g., I was trying to install Skype on Ubuntu 15.10. It doesn't work. Apparently it was meant only for 12.04 and that's why it failed. By doing some poking and configuration, it eventually got installed. What went wrong with dependency management, in this particular case?
    – Boyang
    Feb 26, 2016 at 4:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.