3 ms·
:-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 trie
by 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.
- 13y ago
- nly 13y ago> All the hard work of figuring out dependencies, avoiding cycles, etc is done OUTSIDE the OS by the repository maintainers Your typical package manager will build a recursive and reverse dependency database, resolve version conflicts, detect cycles, and suggest alternative dependencies and recommended or optional packages. Here's the official PKGBUILD used by Arch for ffmpeg as an example. There's not a single version qualifier in sight, and no other files are needed to build and install the package... from source. https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/ffmpeg https://projects.archlinux.org/svntogit/packages.git/tree/tr... It's not exactly trivial, but FOSS OSs have been doing this for decades and have hundreds of thousands of packages. It's a vast improvement over having 28 copies of the openssl dll on your average Windows machine, all out of date.
- ksk 13y ago>Your typical package manager will build a recursive and reverse dependency database, resolve version conflicts, detect cycles, and suggest alternative dependencies and recommended or optional packages. All that is done outside the OS by third party code. Also, you have to stay within that particular package manager to get those benefits. With different distros you have to stay within whatever package manager they ship with. There is no common "linux" code that allows this to happen (Indeed you can implement a package manager on any OS). If you go around installing rpms manually or installing/building via source, it is fairly trivial to bork your package managers state. For e.g. - If you manually build/install a dependency that one particular package in the repo says should be of a different version..
- nly 13y agoThe package manager is part of the OS distribution. It's not 3rd party code.
- ksk 13y agoUnless its LFS. :) But yes, in general all mainstream Linux distros do ship with many tools/libs - X.org, GTK, Gnome, whatnot. Are all of them part of the OS? I see the package manager as a third party tool much like the rest since it does not interact with the core OS in any deep sense. But maybe my point of view comes from being a Linux user since 1996 with Slackware..
- code_duck 13y ago>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. Third party to whom, exactly? Each major distribution maintains its own repositories and packaging system. Okay, so that's all they do... it works great. They also provide a central place for your system to download a huge variety of software that has been tested and approved for your specific OS version. >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. You could, but they don't. The fact is that for years prior to the Apple App Store for iPhone or OSX, or the Windows Store, there existed a way to install a wide variety of Linux software automatically and easily from a central source. >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. Sure, that's true. Personally I've always found the software I need on the main repositories for Ubuntu or Debian, and not needed to add external sources. When there is a package I need that's not in a repository, installing a binary or compiling from source has worked fine. So I haven't experienced the problems you mention or hint at in 10-12 years of desktop and server Linux use.