Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

:-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.



>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.


>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.


> 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/5505/ http://unix.stackexchange.com/questions/59930/ http://unix.stackexchange.com/questions/96282 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.


Look, no offence, but by the look of the links you gave, you have no leg to stand on and you seem to conflate package management and resolution with software distribution platforms(which has more to do with marketing than technology).

All the links you provided have one of the following traits: 1) User decided to build from source - That's outside the package management and FYI "make && make install" on Linux is exactly the same on Mac.

2) User decided to include Testing repositories on Debian which, since you don't know, it's like having a different Debian distro.

3) User decided to install broken proprietary software(in that case Oracle) that for arbitrary reasons forced the user to install x86 packages while the user's system is 64-bit.

In any case, you don't install Debian if you want bleeding edge packages - wrong tool for the job. Choose Fedora, Ubuntu or OpenSUSE.

If you work in the CS industry and you say that no one wants something like Linux package management, well you simply... don't work in the industry.

AppStore, Steam and whatnot have absolutely nothing to do with package management and dep resolution. Also try something, make a script or program that installs and deploys automatically a development environment with either of the aforementioned technologies. Oh you can't? Yeah that's because you conflate technology issues with marketing issues.


>1) User decided to build from source - That's outside the package management and FYI "make && make install" on Linux is exactly the same on Mac.

So Linux as an OS does not do dependency management - you have to stay within a third party tool/package manager. Thanks for proving my point.

2) User decided to include Testing repositories on Debian which, since you don't know, it's like having a different Debian distro.

Adding more repos leads to breakage - Exactly what I said. You are adding nothing new.

3) User decided to install broken proprietary software(in that case Oracle) that for arbitrary reasons forced the user to install x86 packages while the user's system is 64-bit.

It would have made no difference if it wasn't proprietary. Also I have seen such breaks multiple times with F/OSS software.

>If you work in the CS industry and you say that no one wants something like Linux package management, well you simply... don't work in the industry.

Stop putting words in other peoples mouths. Thats dishonest.

>AppStore, Steam and whatnot have absolutely nothing to do with package management and dep resolution.

Good job replying to something I never said. My mention of Steam and the App store was specifically for digital distribution. Heck .. I even said so myself...

Let me quote myself.. (rather sad that I have to do this)

"The Apple App Store distributes _self contained_ binaries+dependencies (excluding OS libs) which is one sane way of doing things."

"Across platforms I'd say Steam is a much more better platform than apt-get/yum etc for digital distribution of software."

This is my last reply. Goodbye.


> So Linux as an OS does not do dependency management - you have to stay within a third party tool/package manager. Thanks for proving my point.

Debian is an OS. Linux is a kernel. Within a debian (or ubuntu) install, dpkg/apt-get are a first party tool, supplied as part of the operating system.

So debian, as an OS, does do dependency management. I'd include a mirror "thanks for proving" comment here but I don't want to lower myself to your level of supercilious condescension.

The multiple upstream repository problems you describe are very real, though - the nix approach avoids a lot of the upgrade-related problems but still relies on a curated channel of compatible versions, although given the capacity to have multiple versions of things installed relying on multiple such channels will be safe for the user, and the disadvantages at that point largely accrue to the effort required of the curator.


I don't consider the package manager tool-set to be part of the OS. Certainly it is part of a distribution much like other tools are. There is some amount of pedanticness involved when it comes to differentiating the common use of Linux as an OS, Linux as a kernel, Linux distributions, etc. I was using "Linux OS" as a catch all for the kernel + whatever to make it boot to a console.

FYI condescension is reserved for intentionally dishonest replies - which I did detect earlier from the other poster.


I think the 'distribution' concept mostly exists because Linux is just a kernel - I consider the whole thing the OS, especially given apt-get is how I mostly get my kernels.

To my mind, Slackware is an OS that chooses not to ship something of the order of apt-get, rather than separating 'OS' from 'distribution'.

But given you're (by default) booting Debian's choice of Linux kernel, and Debian's choice of userland, all tied together by the dependency resolution of Debian's shipped package manager, which is what provided you with said kernel ... I still think calling it a third-party tool is silly.

Or at least, I see Debian as the first-party rather than Linux here, and I think the fact that your way of looking at it is ... well, "not how I commonly see things regarded" ... the problem wasn't so much dishonesty as a complete failure to realise you were using a different communication protocol.

Never attribute to dishonesty that which can be adequately explained by terminology mismatches :)


You're a riot. I was not dishonest in the slightest. The part which you "detected"(more like you needed something to evade answering) as dishonest was me saying "If you work in the CS industry..." which everyone understood as "If someone works in the industry" and not you specifically!

But yeah, of course, you prefered to think of it as if I was putting words in your mouth. Pfft.

Nevermind that you twisted every answer I gave you with your denial and ignorance.

At least everyone else sees who's dishonest and vote with their 'downvote' button.

Internet is like that sometimes.


So basically it boils down to "I am not a professional and thus I am not qualified to have strong opinions in such matters".

You can close your ears and do "la la la la... I can't hear you" and be as much in denial as you want. Unfortunately it won't change the reality.

Instead of writing "This is my last reply. Goodbye.", I suggest that you avoid commenting on issues you have just a passing familiarity and leave that to the professionals. It would save you from future embarassements.


>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.


> 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/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.


>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..


The package manager is part of the OS distribution. It's not 3rd party code.


Unless 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..


LFS is not a distro. It's documentation to build your own distro.

Xorg, GTK and all the irrelevant stuff you mention have nothing to do with it. If you remove yum/rpm or dpkg/apt from the system it simply stops working. Also you can't replace apt with yum and vice versa, as you can with KDE vs GNOME.

Package management is a very integral part of a system, that's why we separate distros by their packaging system(apt-based, rpm-based, emerge, etc...)

You keep spouting nonsense and you keep being voted down, yet your insistence in showing your ignorance is astonishing.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: