4 ms·
Package management is really useful for servers, or other systems where there's a bunch of dependencies. Desktop apps hardly need it, and OSX apps in particula
by randallsquared 17y ago
Package management is really useful for servers, or other systems where there's a bunch of dependencies. Desktop apps hardly need it, and OSX apps in particular don't need it. The combination of the drag-to-applications-folder installing and checking for new updates to the app when you launch it solves the vast majority of this problem for the vast majority of users.
- arohner 17y agoYou're absolutely right, but as a developer, package management makes a significantly more pleasant experience. I also really hate how every OSX app has it's own way of doing updates. Even if the OSX makes desktop apps not need dependencies, it would be really nice if I only had one 'update' button to push. As it is, 5 different things want to update practically every day.
- sjs 17y agoIt's pretty silly to have a serious dev machine without a package manager. What do you do when you migrate to a new machine? I like to copy a list of packages and then run an update/upgrade command. Linux wins by far. Copying a directory of self-contained apps is quick and easy as well... but if you need binaries for a newer arch, say x86-64, you'll have to download a new copy, whereas the package manager solution has you covered.
- gommm 17y agoThat's why I use macports on os X... While it's not provided directly by apple, you can't say that there isn't any package manager...
- sjs 17y agoThat's true. I quite like OS X and use MacPorts as well. These days I use OS X almost exclusively. The only reason Linux wins is OS X still has some installers. Not many, but any at all are too many for me. Copying app bundles around is easy enough though and they make things Just Work w/ fat binaries, so kudos to Apple for making that easy. Their Migration Assistant is slow, but still eases much of the pain of migration.
- rbanffy 17y ago> it would be really nice if I only had one 'update' button to push. No. If you are asking for updates and fixes, you are doing it wrong. It should be automated, because you shouldn't have to bother to remember pressing a button. I set up my mother with a Linux box and sure as hell I don't count on her pressing buttons without some prompting. > As it is, 5 different things want to update practically every day. If you have a defective library that's bundled in five apps and needs fixing, you will have five upgrades instead of one. And, possibly, an OS update and a reboot. But only if you are lucky and the publishers of the five programs are paying attention. Most likely, you will end up with five different bugs scattered throughout your system with many different libraries that really should be just one.
- randallsquared 17y ago"Most likely, you will end up with five different bugs scattered throughout your system with many different libraries that really should be just one." Actually, I prefer the five. When you have a shared library, and bugs are fixed, applications that use the library might well break. Shared libraries mean that either applications are at risk of completely failing to work, or that the library developers have to flag the bugfix as a new version to avoid that. Either way, incompatible bugfixes require application updates anyway, so you might as well avoid the breakage and use static libraries. It seems to me that the only good non-mirage reason for shared libraries was disk space usage, and that's just not a problem any more. Down with shared libraries and dependency hell, I say! ;)
- senko 17y ago> It seems to me that the only good non-mirage reason for shared libraries was disk space usage. Shared libraries are shared in memory too. If you have 5 separate copies of libfoo and you start up applications using them, you'll have 5 copies of libfoo in memory too. And memory is much scarcer resource than disk space.
- AlisdairO 17y agoTrue, although code memory space consumption is not the issue it once was. The consumption of most of the big hogs (web browsers, word processors, etc) is data-related.
- randallsquared 17y ago"As it is, 5 different things want to update practically every day." Ubuntu is essentially the same in that; some weeks I come home from work to see the "Update Manager" floating in the background two or three times. :)
- rbanffy 17y agoThat's a circular argument. OSX apps solve the dependency problem because they have no other way of dealing with it. They have copies of the dependencies inside the app bundle because they have to be self-contained bundles. But that's not solving the problem - if you have a defective library inside a bundle, upgrading the copy that lives inside the other bundle will have no effect on the first one. Programs are on their own and the provider must ship a new release of the bundle for each and every update on each and every library that gets bundled. Each program has to self-update and decide if the user will be exposed to a vulnerability while it self-updates or if the user will have to wait for the upgrade to finish before he or she can read his or her e-mail. The idea that all shared libraries are in effect shared and updated at the earliest possible time, automatically, makes a lot of sense for desktops. This is insanity. It only looks sane if you have never seen anything better.
- ericd 17y agoRemember DLL's on Windows? Having one new app upgrade a shared DLL was the source of so much pain in other apps. In a perfect world where interfaces are rock hard and apps code to them perfectly rather than how they actually work, shared libraries are a fine idea. In the real world of desktop software, though, independently tested, self contained packages are a much more robust solution. OS X's application installation system works wonderfully, and the libraries they provide to enable publishers to push updates works well enough. And, disk space usage from redundant code is a non-issue.
- rbanffy 17y agoOf course I do. That's one problem package management solves. You (software piblisher) don't update libraries you don't own - just your application. Shared functionality, like how to read PNG images is managed by the system. This also forces library makers not to break interfaces, solving the other problem you mentioned. If you need a specific version of a given shared component, you state that dependency in your package and, if possible, the proper library gets installed with your package. Added disk usage was never the issue. Consistency of behaviour is. With shared components you know your machine will decode PNGs in exactly the same way across all the applications installed.
- lygaret 17y agoIn addition to that, there's no restriction on having something like apt-get for packages that really don't make sense in the "drag-to-install" paradigm. Which is why I installed my own version of ruby, say, out of ports. I like OS X because, yes, there's a paradigm, but there's a rich underside that you can use as much as you like.
- rbanffy 17y agoThe problem with ports on OSX is that it installs an "alternative" OS on the side of your real OS. That's quite confusing sometimes.