Tony Mobily published an article in Free Software Magazine discussing software installation, specifically end-user software installation, on Linux, which he calls broken. I agree that the system is flawed, but it is not broken. The most important thing is that we not reinvent everything around the fragmented models that OS X and Windows use.
What about Windows and OS X?
Though many would disagree with this statement, I believe that Windows current has one of the worst software installation experiences. Every application developer creates his/her own installer, often based from one of the commercial installation tools. This means that, though some unofficial standards have developed, every installation is different. In addition, Windows software installations usually waste clicks. How often are the instructions for installing software on Windows “press next, press next, press next, press next, press install, press finish?” Then, when a new version comes out, you have to go through each application’s own updating process, leading to tons of software popping up different boxes asking if it can update itself. On top of this, very little can be done to verify software’s authenticity and applications can and do put files anywhere they like. This is not the right model to follow.
Mac OS X is the common target that Linux users point to as the “right” way to install software. Apple certainly had the right idea. You drag what looks like a single file into your applications folder to install, and you drag that file to the trash to uninstall it. That, in theory, is an excellent system, however there are a few problems. First, there is, as on Windows, little ability to verify a program’s authenticity and, for lack of a better word, working-ness. Second, while installation is easy, uninstallation is not always clean. Even on OS X, programs sometimes scatter files around the disk. This has lead to the creation of third-party commercial programs to fully uninstall OS X applications. Third, this system still doesn’t provide any unified way of updating applications. Finally, many software makers do not use the drag-and-drop installation, instead opting for a more Windows-like installation wizard. This system is much better, but is still not the right thing to imitate.
What about Linux?
Despite the many flaws, Linux actually has one of the best software installation methods, in theory. Applications can be installed via a single, standard interface listing the program’s name and a short description. Just check a box and software can be easily installed or uninstalled from a verified source, providing some level of assurance that the application will work. Most importantly, software is updated through one interface that integrates all software updates.
If the software you are looking for is not available through this interface (meaning that it is not in the repositories), you can either add the software’s repositories, allowing it to be updated along with all the other software, or you can directly install a package (for example, a .deb on Ubuntu or Debian), leaving you to update the software yourself.
All that said, though, there are a lot of flaws, such as those discussed in the FSM article referenced above:
“Users need to have root access in order to install a piece of software; no per-user installation is allowed”
The first part of that is a symptom, the second is a problem. It would be nice to be able to install applications just for one user, but this is not a problem that most people will experience, since most PCs are used by only one or two people.
“It’s very tricky to install several versions of the same piece of software. Just think of the poor graphic designer who needs to install several versions of Opera and Firefox;”
Agreed. That’s a clear flaw. (Though, to be fair, most people will not notice that either.)
“A piece of software is bound to a specific distribution, and — what’s worse — to a specific version of that distribution too. It’s not trivial to install Openoffice 3.1 on Ubuntu 8.10. You can argue that you can install the bunch of .deb packages from OpenOffice’s web site. Tell that to your grandmother or your average inexperienced computer user.”
OK, OpenOffice is notably more difficult to install than most applications thanks to it’s numerous packages, but I get the point: with a new version of many distributions coming out every 6 months, application have to be compatible from release to release. When you install from your distribution’s repositories, this is handled for you, but a better solution has to be found, since this is probably the biggest issue for developers.
As a result of this, some, mostly larger, companies are now distributing their Linux software as an installation script that handles installation on many different distros and versions. While, convenient for them, this is the wrong approach (and should be appropriately discouraged), since it leads to the Windows problem of different installers for everything and scattered files.
“The software needs to be downloaded from the official repositories. Well, it doesn’t need to, but an average user wants to stay well away from unofficial repositories for technical reasons;”
This is the biggest issue for most users. Adding repositories is unintuitive, and packages aren’t always clearly marked in terms of what distribution they are for (see above), causing confusion to new users. For this, a better way of managing installed pacakges and of adding repositories is needed.
Finally, we just need education. Half the problem here is that Linux has such a different approach than OS X and Windows, so perhaps we should make a greater effort to inform new users of this change, so they don’t get confused.
The solution
Do we need a completely new solution? Possibly, but probably not. The current system is pretty good with two exceptions:
I think that everyone can agree that a serious effort to improve software installation on Linux would make a huge difference in day-to-day Linux usage, particularly for newbies. I am optimistic that we might get some real attention to this issue, allowing it to be resolved in a way that doesn’t imitate any other OS, but rather does it better than any other OS.
Related posts:
The Linux style of installation is the “future” of installs, but it needs a lot of adjusting to work for commercial products. The iTunes App Store, and CNR, is the direction – it generates sales, and works a lot like repository-based installation.
What if we add a new test such as if package management software is run without administrative priviledges, it should fallback to a ~/.usr prefix instead of /usr? With the help of Package Kit the problem would be solved easily, right? This would add minimal change to current package management software and will be available for Debian, Fedora, Gentoo…
This could also help migrate software and configuration from user space to system wide quite quickly and cleanly.
I got this idea today when I installed Firefox 3.5 into /home/user/apps, because it was a tar ball and there are no packages for my distro, yet.
But when I thought what flaws are in this strategy, I quickly found the biggest: with the ~/apps scheme, you get the system path of what’s in the system plus ~/apps/firefox/, ~/apps/eclipse, which is all wrong by my standards. Why not keep in userspace the split between bin, docs, and configuration as it is standard unix system wide?
And then, logic follows that if we keep the same tree structure in /home/users/usr as it is system, why not just use the standard package management software?
What do you think?
What makes applications incompatible across distributions is the shared libraries and their different versions, so although shared libraries have many good things, I think the only way to make applications truly binarily compatible across distros is to use static linking (or some own local library path).
The 0install thing also sounds interesting, even though I have a strong feeling there are overlooked flaws with it
@Chris
that already exists, is called CNR http://www.cnr.com/
@dajomu
opensuse’s one click install is good and can be implemented by multiple distributions, looks like a good start for many distros
cross distro client vid
http://video.google.co.uk/videoplay?docid=494315634277751745
And you get this from opensuse which seems like a great idea.
http://en.opensuse.org/One_Click_Install
Wasn’t there something called Klick for kde/kubuntu where you just downloaded a file using Konqueror and the programme got installed? To remove it you just deleted the file.
Sort of true in parts, but I think Linux package management is far superior despite these possible issues.
The fact that users cannot install software is a security issue and a good thing. You don’t want all users being able to install whatever they like. Plus, if you do, then you can give them specific priviledges to do so with via sudo with their own password, or add them to a group which can.
Also, users can install any application they want into their home directory and execute it. They might need to be statically built, but it will also work if the required libraries are on the system.
There is a Linux distro (can’t remember the name, PC/OS?) which has an OS X style of installing where each program is installed into its own directory where it has all the libraries it needs. It handles multiple versions too AFAIK as they are just installed into a different directory. Not that I’m advocating this style, but I guess the thing is that pretty much anything is possible
The way package management works under Linux is a testament to the stability of the platform. I don’t think much needs to be changed.
Cheers,
Chris
When I first read Tony’s article I was tempted to post that he was a blithering idiot, but calmed down and moved on. You are correct in criticising his post. We must never move to a Windows like system. Grandma is quite capable of downloading an exe file off the web and double clicking her entire computer into oblivion. The use of repositories means that users of Ubuntu, Debian, Fedora, OpenSuse etc etc can confidently install a program in the knowledge that there are no security issues. Why? Because the repositories are maintained by the package maintainers of each distro.
When Grandma moves to GNU/Linux she needs to adjust her thinking about installing software. You do not download an executable from a web page and install, the first place you look is in Synaptic or Add/Remove Programs.
Updated software versions on older distros is a different question. Activating backport repositories can help a little. Ubuntu users have GetDeb, although that has elements of the Windows model about it. I happily use GetDeb as I trust their integrity. For advanced users there are the PPA repositories, if you want bleeding edge. Grandma might struggle to add a PPA repo to her sources.list so she can have OpenOffice 3.1 on Ubuntu Intrepid, but then some Grandmas are way smarter than the stereotype.
Software installation in GNU/Linux is not broken, it is sensible, safe and secure.
What is broken is education. New users need a better education in their move from one system to another.
“It’s very tricky to install several versions of the same piece of software. Just think of the poor graphic designer who needs to install several versions of Opera and Firefox;”
Virtualbox to the rescue. That way you can run several versions of browsers, plugins, everything to test compatibility.
As for the rest of the post, i agree.
I happen to like the install process on Ubuntu Linux:
sudo apt-get install application_name_here
.. and you’re done. You could even make it easier by using a bash alias:
alias installme=’sudo apt-get install’
so now it’s:
installme application_name_here
Looking at both the origional post from FSM and yours, I have come to the following conclusions.
One, universal packaging is simply not going to happen. The packages is what makes a distribution a distribution. Moving to only one linux distribution has been talked about very often before, and It’s simply not a matter of one size fits all, never will be, and we should never mistake it as such.
Downloading debs (I’m a Debian user) makes for a great way to move one application from one computer to another, except for dependantcy support. I love the consept of dependantcies, and I really like the say apt and it’s front ends handles them. It’s that much less clutter to worry about on an installed system. I would be nice to have something on the Debian web package portal to “Download this application, and all it’s dependantcies” to make sure you get all you need. But the best way of living without the network is to simply run your own local mirror. They are that big, and most drives aren’t that small.
Finally, the across release caught me by supprise as I’ve gone through three versions of Debian by simply doing my own upgrading. Rolling releases really are the best way to go, in my opinion as it prevents this issue entirely.
As you mentioned before, everything else is just education. At no point should Linux software installation EVER even attempt to be “more like Windows”.
One nice way to better define distro/package relationships would be for distros to have a format that defined their compatibility. Ubuntu broke compatibility with Debian so they shouldn’t use .deb packages, for example. Rename them to .ubu or something perhaps?
A nice wrap-up, thanks!
About future, unified ways of installing: I think that in our web-centric age the ‘web-shop’ approach to software installation might be the right idea as most users can wrap their heads around click-for-download or even click-for-download-and-installation.
It would be nice if clicking on a single ‘install’ button on a trusted website (which could index packages for all distributions) would trigger the download of the fitting package-format for my distribution automatically and also auto-start my distro’s own package manager to deal with the downloaded file.
I would never have to worry about what sort of Linux I’m running, and verification of the packages’ integrity could be either left entirely to the website (bad idea) or to the distributions’ package-manager (which should be silent unless an error occurs).
Wouldn’t it be best to use “the OS X way” of installing packages (I mean the one without the installer) for installing packages in the user’s Home-folder? No problems with dependencies, because they would all be contained in that package and users wouldn’t have to be root to install it.
You could, however, have a system-wide installation by moving the package to something like /opt.
Normally you’d use the package in your reposotories, but if you want something newer or unavailable you could use this.
once again the solution is the 0install way (or similar approach)
http://0install.net/matrix.html
we been talking about it for years nothing done by the distros…