The Package Manager – A Love/Hate Relationship

Out of every piece of software in Ubuntu, the package manager is the single most monumental and unique piece in the Operating System. I can tell you about Evolution (Ubuntu’s email client), or Totem (Ubuntu’s media player) and even if you’ve never used these programs, it would be easy to relate them to other things you likely have used. However trying to relate a package manager is a bit harder. The use of a package manager, and going further than that by completely relying on one, changes the OS experience entirely. Some of these changes are good and some are bad, driving what has become a love/hate relationship with apt, Ubuntu’s package manager.

Rather than trying to explain what a package manager is, it would be easier to explain what is a package manager. Package mangers are more common than most people would think, as there are several systems that use package managers without it manifesting itself in an obvious way. My iPhone runs a package manager – two in fact – one being the iTunes App Store and the other being apt (the same as Ubuntu) sitting underneath Cydia. Steam is also a package manager, taking care of its own little microcosm of games, mods, and SDKs. Most people have used a package manager without realizing it.

But none of them take it as far as Ubuntu. Steam only uses package management to install games, the iPhone via apt takes it a little bit further to install a wider base of applications and frameworks, but none of them integrate package management in to the OS like Ubuntu does. Everything in Ubuntu is a package, starting with the kernel and moving to drivers and applications. And the ramifications of this are huge.

When you go to install an Ubuntu application, there is no need to track down an installer for an application, make sure it’s the latest version, make sure it’s not really a Trojan or virus-infected, etc. All of the applications bundled with an Ubuntu release sit on Ubuntu’s servers as a package. Finding software to install (if it didn’t already come on the CD) is as easy as firing up the Add/Remove Applications application, and looking for the application you’d like to install. And if you don’t know what you want to install? Ubuntu will tell you all about whatever application you’re looking at.

Once an application is installed, the package manager will keep track of that application. It can uninstall the application if you need to remove it, or make sure it’s up to date if at some point a newer version (such as a bug fix) is published. The package manager brings everything together.

From an application perspective it’s little different than the iTunes App Store, but compared to what other OSs do it’s a big deal. How many different applications install their own updater service? Even though Microsoft and Apple consolidate updating their software in to their own software update systems, they can’t do that for everyone else’s applications. Chrome, Flash, Java, etc all have updaters running in the background just to keep their respective applications up to date. And while these updater applications are small compared to what they’re tasked to monitor, it’s none the less a waste of resources. Why do you need many applications to do the same job? On Ubuntu, you don’t.

On Ubuntu, the package manager is also in charge of keeping the OS itself updated, which is where we see it significant diverge from our earlier example of the iTunes App Store. Mixed in with application updates are updates to various system components, each one dutifully made in to their own package. This makes it very easy for Ubuntu to distribute component updates as needed (rather than bundling them together as larger updates) but it’s also a bit daunting – there are a lot of updates even when starting from Ubuntu 8.04.3. Nevertheless, for the curious types, this allows you to see exactly what’s being updated, and usually there’s a note attached with a meaningful explanation as to why.

Ubuntu’s package manager is the most foolproof way to install and maintain software I’ve ever used, on a computer. And that’s why I love it.

The package manager is also the outlet of my frustrations with Ubuntu, for many of the same reasons. Everything in Ubuntu is a package. There are no drag-and-drop installs like in Mac OS X, and there are no MSI/NSIS/InstallShield installs like Windows, there is only the package. The problem is that the package manager is an extremely self-limiting device when combined with Ubuntu’s software distribution philosophy as we mentioned earlier. Ubuntu isn’t just distributing an OS on which you run programs, but they’re distributing the programs themselves, and it’s all one stable platform.

You’ll first discover how frustrating this can be when you decide that you would like a newer version of some piece of software than what Ubuntu offers. We’ll take Wine for example, which develops at a rapid pace. If you want to be able to install the latest version of Wine, rather than version 1.0.1 that comes with Ubuntu, you’ll need to follow these instructions, which are composed of adding new repository entries to apt, followed by downloading and importing an authentication key in to apt so that it will trust the packages. Only then can you go back in to the package manager and tell it to install the latest version of Wine.

The Ubuntu project does offer a slightly simpler alternative through the Personal Package Archives, which are packages uploaded by users and hosted by the project. PPA repositories are a bit easier to install than the standard DEB repository, but the primary focus on PPAs is that there’s additional software available as a package for easier upgrading and maintenance. However since PPAs are maintained entirely by users, they’re unreliable as a source of updates, and not everything is made available for Hardy.

As a result of all of this, the package manager has just made software installation on Ubuntu a good deal harder than it is on Mac OS X or Windows if we wanted to do the same thing. And if you want a piece of software that’s not either the default Ubuntu version or the latest version from another repository, good luck, the package manager is designed to make upgrading easy, not necessarily downgrading.

The package manager exists to the detriment of any other way to install software. Technically software packages can be distributed outside of a repository, but in my own experience that seems very uncommon. Followed by that you have the shell script containing a binary blob (which may or may not be recognized and open correctly) and the more bearable-but-rare compressed folder. You are, for better or worse, stuck with the package manager in most cases.

This is why I hate the package manager. To the credit of the developers of it, it’s more of a flaw in the philosophy of Ubuntu than the technology, but the package manager in the minion enforcing the harsh realities of that philosophy. It’s here where the wheels start falling off of Ubuntu. It works well when you want to run software that Ubuntu provides in its main repositories, but only when you want to run software that they provide. Installing any other software is at times a nightmare.

I’ll close out this section reflecting on the iTunes App Store one more time. In spite of being a package manager, I have no qualms with it. Apple doesn’t tie app versions with OS versions, so I can always grab the latest version. Meanwhile if I need an older version it’s not easy, but double-clicking on archived IPA files is still less troubling than trying to pull off something similar with Ubuntu.

True nirvana for software installation and updating lies between Ubuntu’s strict package manager, and Windows’ loose environment of installers. Apple found one solution, though certainly not the only one. Ubuntu would do well to find a similar way to meet in the middle. As much as I love a unified installer and updater, as done by Ubuntu it causes me more frustration than enjoyment. I consider the package manager to be the worst regular experience of Ubuntu.

A Word on Drivers and Compatibility UI & Usability
Comments Locked

195 Comments

View All Comments

  • Eeqmcsq - Wednesday, August 26, 2009 - link

    for your time spent on writing this article. I've made the jump to from Windows to Ubuntu (and Xubuntu for my older computers) back around 7.10 and 8.04 and I went through some of the headaches in adjusting to Ubuntu, but I eventually solved all of them and I'm quite settled in now.

    One comment about finding help in the form of command line instructions, rather than GUI instructions. GUI instructions for Ubuntu would not be useful for Kubuntu or Xubuntu, since they use different window managers. The command line solutions usually work for all three.

    Also, boot times were noticeably improved in 9.04. Perhaps you can run a quick retest on it.

    And you CAN install stuff when using the live CD. I've installed a couple of temperature monitoring utilities when I was stress testing my motherboard.

    Finally, thanks again for writing such a thorough look into your Ubuntu experiences. It was a great read in seeing how far Ubuntu has come and what it still lacks.
  • fepple - Thursday, August 27, 2009 - link

    Yeah, you can set the APT sources to use a CD. There is an option for it 'system' > 'administor' > 'software source', or you can edit the /etc/apt/sources.list file
  • clarkn0va - Wednesday, August 26, 2009 - link

    [quote]since SMB is the predominant protocol for consumer file server gear, it’s a fair test of such use.[/quote]

    While this comment is not false, it presents a lazy approach to comparison; it's a one-sided contest, and Linux, pitted against Windows on home turf, doesn't stand much of a chance.

    You as much as acknowledge this in the article, so why not provide some counterpoint? For example, consumer file server gear, even if it supports SMB almost ubiquitously, is usually *nix-based. So instead of just showing Windows and Linux clients interacting with Windows servers, show them interacting with *nix servers as well. Do some NFS transfers as well; NFS is well supported in consumer NAS these days.

    You also really missed the boat on the video drivers. 8.04 was not the first Ubuntu release to include the Restricted Drivers Manager (known simply as "Hardware Drivers" in later releases). This handy app will identify hardware, such as AMD and NVIDIA GPUs, that can take advantage of proprietary drivers, and will offer to to install the same via synaptic (APT) with just a click of the mouse. No CLI, no headaches.

    Still, a thorough review, and generally well-researched. I'm looking forward to the 9.04 follow-up.

    Since you mentioned hardware HD decoding, I recommend taking a look at smplayer from the testing ppa (https://launchpad.net/~rvm/+archive/testing)">https://launchpad.net/~rvm/+archive/testing). Unfortunately vdpau doesn't work with the nvidia blobs in the default Ubuntu repos, but I believe there's a PPA providing vdpau-compatible blobs for anybody not wanting to do CLI installs.

    db
  • VaultDweller - Wednesday, August 26, 2009 - link

    [quote]While this comment is not false, it presents a lazy approach to comparison; it's a one-sided contest, and Linux, pitted against Windows on home turf, doesn't stand much of a chance. [/quote]

    This isn't Linux pitted against Windows on home turf, it's Linux pitted against Windows in the real world.
  • clarkn0va - Wednesday, August 26, 2009 - link

    Well, no doubt SMB is the dominant method of sharing files for consumers in general. Obviously comparing Linux to Windows makes sense in a world where Windows is the incumbent, but it's not the whole story.

    I hope Part 2 will address some of the objective benefits of Ubuntu, and not fall into the trap of "worse because it's not the same as Windows".
  • VaultDweller - Wednesday, August 26, 2009 - link

    I agree in principle, but there has to be a distinction between "Worse because it's not compatible with Windows," "Worse because it's not as easy as Windows," and "Worse because it's not the same as Windows." Die-hard *nix advocates tend to dismiss the first two as if they were the latter, and this tends to undermine their argument.

    Also, in some cases "Worse because it's not the same as Windows" can be a valid point, because the public has been trained to the point that the Windows way is the "intuitive" way. Of course, this isn't truly intuitive, as people who learned Linux first would find Linux methodologies more intuitive - but that's largely a moot point, as that's not the reality we live in today. You could say the same thing about the color red - in the western world, when we see red we can intuitively guess that it means Stop, or Warning, or Error, etc. The fact that this is not an understanding we're born with but rather a socially acquired intuition does not mean it would be any easier to suddenly change the color of traffic lights and expect people to adjust without problems.
  • Ryan Smith - Wednesday, August 26, 2009 - link

    All of the NAS gear I can get my hands on is either SMB only, or is a Time Capsule which is SMB + AFP. I don't have anything that does NFS, which isn't so much a comment on testing (I could always set up another box) as it is usefulness. NFS just isn't common on consumer gear; SMB is a more important metric if you're looking at file transfer performance, because that's what most people are going to be working with. This doesn't preclude doing NFS at a later time though.

    And the Restricted Drivers Manager is limited to the drivers in the Hardy repository, which means they're a year+ out of date.
  • amrs - Wednesday, September 30, 2009 - link

    Interestingly, if one checks the SmallNetBuilder NAS charts, it looks like out of 87 NAS devices, 49 have NFS. 56% in other words. And you say NFS isn't common? Really now? Seems a little biased to me.
  • ekul - Wednesday, August 26, 2009 - link

    While a lot of your issues have complicated solutions or lengthy technical backstories I can solve your complaint of smb shares mounted in nautilus not being useful in non-gtk applications in one simple command (or as you seem to hate commands the gui can do it too).

    theory: make a symlink to the directory nautilus mounts to so it can be easily accessed. Symlinks to directories or files are transparently (to users and applications) identical to the location they refer to. Windows doesn't have symlinks (only useless shortcuts) so it isn't surprising you were not aware to do it.

    howto: gvfs uses the directory /home/$USER/.gvfs as a mount point so link to it:
    ln -s ~/.gvfs ~/linkname

    howto gui: in nautilus go to your home folder then choose view -> show hidden files. Right click on .gvfs and choose make link. Then you can rename the link to whatever you want and hide hidden files again.

    hint: symlinks are your best friend. My home dir is littered with links to places on the filesystem I visit a lot to avoid a lot of clicking/typing
  • Ryan Smith - Wednesday, August 26, 2009 - link

    I suddenly feel very humiliated...

    The symlink is a very elegant solution, I'm embarrassed I didn't think of that myself. It's a bit of a lousy solution in that there even needs to be a solution, but as far as things go that's a very insightful suggestion.

Log in

Don't have an account? Sign up now