4 ms·
I don't know why you picked Linux. Its a particularly poor example. Linux, unlike a modern OS, lacks any kind of sane dependency management. Thus, it throws thi
by ksk 13y ago
I don't know why you picked Linux. Its a particularly poor example. Linux, unlike a modern OS, lacks any kind of sane dependency management. Thus, it throws this responsibility on the repository maintainer to maintain a MxN matrix of packages and dependencies. God help you if you add another repo with a different set of dependencies which conflict with the existing repos. Dependency hell is a still present problem on Linux. Anyway this is nothing new, as users of Linux, we all know about this and the developers know it even better.
The Apple App Store distributes _self contained_ binaries+dependencies (excluding OS libs) which is one sane way of doing things.
- rantanplan 13y ago:-O Which decade are you coming from? Windows and Mac don't have dependency management at all. They just pack one big blob with all the dependencies. Mac tries to imitate the Linux packaging with homebrew, but it's far from it yet. The thing about different repos with the same deps is solved with 'priorities', since its inception.
- ksk 13y ago>Windows and Mac don't have dependency management at all. Not sure why you feel so compelled to talk about OSs I didn't mention. I was talking about the iOS App Store. In any case - apt-get, yum etc are third party tools that just copy, extract files from some server and run some pre-made configuration scripts. Thats all they do. All the hard work of figuring out dependencies, avoiding cycles, etc is done OUTSIDE the OS by the repository maintainers. You can do that on ANY OS. >The thing about different repos with the same deps is solved with 'priorities', since its inception. Different repositories which the user ads can and do have dependency conflicts. One package from repo-1 can require a lib with version >= 1.0 while another package from another repo-2 will only work with version 0.9, etc. I have often had to add add other repos to get software unavailable in current repos. I have run in to these issues quite often. And I am not even getting into how brittle apt-get in general is.
- rantanplan 13y ago>Not sure why you feel so compelled to talk about OSs I didn't mention. Because you said:"Linux, unlike a modern OS, lacks any kind of sane dependency management", which is of course non-sensical, as it is the only OS with dependency management. Also in the case of RPM the dependencies are listed inside the package, the YUM then just does the dependency resolution and fetches the required packages. I really don't understand what point you're trying reach, since automatic dependency management/resolving is one of the most important reasons Linux is chosen for server environments and deployments. Since I've been doing this for a living for more than 10 years, I really don't know how you have found so many problems and issues with it. Maybe you're using some kind of rolling-release distro? And of course nope; you can't do that on any OS, because.... we would have done it! That's why homebrew for Mac feels like a poor man's apt/yum system.
- ksk 13y ago> I really don't understand what point you're trying reach, since automatic dependency management/resolving is one of the most important reasons Linux is chosen for server environments and deployments. >Since I've been doing this for a living for more than 10 years, I really don't know how you have found so many problems and issues with it. Maybe you're using some kind of rolling-release distro? For average desktop users things like third party repos, PPAs, etc induce failure modes in apt-get that are quite common. One of the most common ways that users get screwed is by adding too many third party repositories or steping outside the repository and build/install via source or installing an rpm/deb file manually. The main reason is the OS does not handle dependencies, only the package manager does. So if you step outside the package manager.. you can get burnt fairly easily doing benign things. A few examples I found in under a minute... http://unix.stackexchange.com/questions/43952/ http://unix.stackexchange.com/questions/43952/ http://unix.stackexchange.com/questions/5505/ http://unix.stackexchange.com/questions/5505/ http://unix.stackexchange.com/questions/59930/ http://unix.stackexchange.com/questions/59930/ http://unix.stackexchange.com/questions/96282 http://unix.stackexchange.com/questions/96282 http://unix.stackexchange.com/questions/8963/ http://unix.stackexchange.com/questions/8963/ >because.... we would have done it! That's why homebrew for Mac feels like a poor man's apt/yum system. That's rather poor reasoning. There are several factors why one would not want to maintain a giant repository of packages and associated dependencies. For one, atleast on newer OSX installs the presence of the Mac App Store negates any large scale interest in such a project. Also the fact that tech like macports, chocolatey, nuget, etc exist, demonstrates the proof of concept. Also I'd like to stick my neck out a bit for MS tech like AppV which is the underlying tech for MS Office 2013 IIRC which allows centralized deployment for enterprises. Its better than apt-get IMHO. Across platforms I'd say Steam is a much more better platform than apt-get/yum etc for digital distribution of software. On Windows - the only dependencies would be third party libs like PhysX, OpenAL, etc. Windows, since XP, has a great OS-level dependency solution (unlike apt-get and the rest - which the Linux kernel/executable loader/etc do not know about explicitly) for installing multiple versions of libraries side by side and having the developer specify things like - whether they want the latest version or whether they want a specific version, etc via simple application manifests.
- code_duck 13y agoI use apt to install a wide variety of software on my home system as well as a couple of servers, and I rarely have problems with dependencies. So I chose it as an example because it has worked well for me for years.