Packages tend to thrust some completely idiosyncratic configuration scheme down my throat that is documented nowhere and that creates conflicts of its own. They don't just solve dependencies they encourage dependencies because they are supposed to be resolved automatically anyway. But they're not. Things break all the time. The Linux dependency hell has far surpassed the infamous Windows DLL hell of the 90s.
I was called to help people fix their Ubuntu installation after some package upgrade had uninstalled half the system. I had an upgrade replace a working but proprietary wifi driver with a non functional "free" one, etc, etc.
Most of the problems I ever had with Ubuntu were caused by that completely broken package management idea. If I want Python 2 and 3 on the same system I can't have a package manager tell me that's not supposed to be when I know full well that it's no problem.
This is a good thing. Developers' attitude toward dependencies gets very lax when it's too much work to declare them or too much work for the user to satisfy them. Then you get into situations where you install a piece of software and 90% of the functionality is broken, because the developer was "considerate" enough not to "force" a bunch of dependencies on you, so you resort to Google to find the real dependencies, which of course aren't available for your distro. Apt gives developers a flexible way to declare different kinds of dependencies, and the Debian and Ubuntu distro repositories give them confidence that the dependencies will install smoothly for users.
I had much more difficulty with undeclared dependencies back in the day than I have with excessive dependencies now. It's just wrong for software to easily install in a mostly broken state. If you want broken, partly-working software, you should have to do extra work to achieve that, not the other way around.
Package management is a solution to a problem that doesn't need to exist in the first place.
Also, you might like http://sta.li/ ;)
Thanks for the link to sta.li, I'll check it out. What I'd really like to see is a Linux distro that managed applications the way OSX does - every program is contained in its own directory.
That exists, it's called Gobo Linux. I've never touched it, but you can give it a try:
1. Upgrading the entire OS at once.
2. Easy updates.
3. Almost never having any issues with incompatible software. When issues arise I can easily roll things back or wait until they are fixed.
4. Never having to hunt for software on the web.
5. Ability to script server/workstation deploys.
6. Never having to spend more than 5 minutes on maintaining my workstation.
That last point is huge. How long would it take you to update Java, Flash Player, Adobe Reader, IE and install SP# on Windows?If there is an alternative way of approaching it I'd be very happy, since it can only be an improvement upon already stellar apt/yum/BSD ports, etc.
But if the applications are all statically-linked, I don't have to worry about dependency conflicts, and some things are a lot simpler, e.g. copying the binaries off to a flash drive to take them to another system, or running two different versions of the same software simultaneously.
On Windows, I don't usually even run installers anymotre; I extract the installers, collect all of the dlls into the application directory, and compress everything with UPX. Once the program is running out of a self-contained directory, I can run it off a thumbdrive, copy it to my Dropbox, etc. Plus I have the option of not updating software when I prefer not to.
The only potential problem I see is statically-linked applications issue. However, I think in the case where libraries are open and shared amongst many applications/other libraries, it makes no sense to use static linking. Its advantages are that you don't need to worry about dependencies but that "is a solution to a problem that doesn't need to exist in the first place" since package management takes care of these issues.
IMHO it's better to spend 30 minutes once a year resolving an issue that arose when a Debian/Ubuntu repository got screwed up for a short period of time, than to constantly try to solve the problem of managing software installation/upgrades.
However, this comes at a price: You'll always have to provide a newer version of the application whenever a serious issue is fixed in one of your dependency libraries. This means extra work for you. Also, you'll have to take care of an auto-upgrade mechanism.
On systems with a package manager, you'll only have to provide updates if you fix an issue in the application itself. You also don't have to write an auto-upgrade mechanism. Just upload a new package to your server.
However, if you don't care that much about users' security, statically linking is indeed a lot less work than using a package manager.
(FWIW, I'm the maintainer of Mingw-cross-env (http://mingw-cross-env.nongnu.org/). This is a project that provides a cross-build toolchain for statically linked Windows applications. It builds a cross compiler and lots of free software libraries. We have that kind of discussion from time to time on our mailing list.)
You can; it's called "pinning:" https://help.ubuntu.com/community/PinningHowto
If I want Python 2 and 3 on the same system I can't have a package manager tell me that's not supposed to be when I know full well that it's no problem.
Let me check; here on Jaunty I can separately install python2.4, python2.5, python2.6, python3.0, & python3.1.
I don't doubt that you've had problems with the package managers, but, um, I think you're doing it wrong.
Installing Python 3 alongside the old version didn't work for a long time after Python 3 came out. If it works now, that's fine. I compiled my own Python 3 a long time before it finally appeared in my system's package manager.
[Edit] And one more thing. I'm not a sysadmin and my interest in system configuration and change management is very limited. But I've been using Linux for a very long time, so if I'm still doing it wrong then many people will do be doing it wrong and that means there's something wrong with the way it works.
You really should give Slackware a try. None of that sophisticated package management nuisance[1] and everything just works!
[1] http://en.wikipedia.org/wiki/Slackware#Package_management
you're doing it wrong
In case you hadn't noticed, I'm a bit bitter about my fedora install at the moment :)
That said, I think you overestimate the delta between OSX and the various linuxes. On the Mac, as with linux, if you want to use a package that isn't part of the core system, you should package it into your app/lib yourself. The big advantage that the linuxes have is that they have a far bigger range of packages in the repository than you have in a mac's standard install. But by the same token, you can't have as much confidence that all the libs play well together, because they haven't been tested as thoroughly as Mac OSX's set of libs...
I'm genuinely interested - I'm a new Mac user who came from Linux and my biggest issue on the Mac so far is that package management isn't as good as apt. There was a discussion on HN and I was disappointed to find a lot of other people have had the same feeling.
I don't go the whole way and just install Debian on the machine mostly because having OSX handle things like the touchpad driver, hibernation, wifi, etc., is less hassle, and I also like OSX as a desktop environment (e.g. being able to use multitouch gestures in the browser). But Linux in a VM is definitely a nicer experience imo than fink was, as a way of getting a parallel Unix CLI userland onto OSX.
Have you tried this recently, or do you just say that because it's the stereotype? Because it's been over three years since I had any hardware trouble with Ubuntu. These days I have more issues on my friend's OS X Macbook (no drivers for 3G modems out of the box) than I do on Ubuntu where everything just works.
If you're on OSX, the ace up it's sleeve is Homebrew[1]. Definitely the easiest package management system anywhere.
Also, while Homebrew has an official repo, it's managed through git and hosted on Github. So for any given piece of software, chances are pretty good that someone out there has packaged it.
Also, Interface Builder.
Things are better on Linux, but not all rosy. Installing Dropbox, for example, is a surprisingly crappy experience (windows popping up, separate proprietary daemon download, etc). That, and way more user requests than you'd imagine, is why we have http://ninite.com/linux now too.
As for Dropbox, yes, I recently went through installing it. Terrible experience on Ubuntu. I think the reason is mostly that it is using a proprietary daemon. A FUSE driver seems like a much better idea, and if they released it under an open license, it would be as easy as apt-get install dropbox.
Glad to hear you like it.
On the other hand, existence of these projects indicates that Mac users are dissatisfied with how installing/updating/maintaining software is done in Mac OS X and are looking for something better.
Lastly, I don't necessarily think that apt is end-all be-all silver bullet answer to all questions. I just think that out of the available technologies today, OS's that are built around package management work better and are easier to use than anything else out there.
I've done this so many times it doesn't take me more than a few minutes to get all the dependencies in order. (I can re-use frameworks I've made before). The frameworks are embedded into the application bundle and can be used on any other computer that can run universal binaries. That makes the app portable, too. The beauty of all this is that other computers don't even need a compiler installed and they can still use the same programs I built. Of course it'll never beat apt... but it's the easiest in terms of getting that DVD to ipod video converter onto my aunt's computer.
I believe you're right. If you want package management the OS has to be built around it, otherwise it won't work quite right (unless you put time into it, of course).
I still will use macosx though, it needs less configuration and everything just works; or maybe I'm just too used to it to use anything else. Mac OS X is built for consumers and developers who develop for consumers who use Apple products. For these consumers and developers Mac OS X is the best there is. Unfortunately I think that's it. Terminal is still good, though.
To upgrade your OS, you only need to click "Restart" when software update tells you to. The only time you need the DVDs is when there is a major version out, i.e "Leopard", "Snow Leopard", etc.