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

  • jigglywiggly - Wednesday, August 26, 2009 - link

    I see you shared a lot of the same problems I had with Ubuntu when I first got it. Yeah, it's harder, I won't lie, and it's a pain in the ass when it doesn't work. But when it works, you love it, and you feel like more of a man. I use it for my web server, runs very nicely.

    Ubuntu sometimes makes you want to shoot it with a m249, but at other times you feel superior to other users. But that's because you are using the terminal all the time and are actually smart, Mac users just need to be shot in the face for their ignorance.
  • smitty3268 - Wednesday, August 26, 2009 - link

    I agreed with a lot of what was in this review.

    I think a lot of your problems would have gone away by using the newer versions, though, specifically with the package manager. There's much less need for finding things outside of it when you're using the new versions. Even video drivers can usually be put off for 6 months or so if you're not too cutting edge. Leaving the package manager behind is a pain, though, as you found out. You tried to explain that the LTS version was more comparable to Windows/OSX, but in truth very very few desktop users continue to use it. In fact, I'm not aware of any. It's really only used by companies for work machines who don't want to make large changes every 6 months like home users can.

    MSTT fonts. Good luck trying to get those by default, they're owned by microsoft who is in no mood to simply give them away to their competitors. Installing them is like installing the patent encumbered video codecs - at your own risk, which is minimal as long as you aren't trying to make money off of it.

    It should be mentioned that Red Hat put down some money to buy some nice new fonts a while ago, called Liberation, that are much nicer than the default serif ones this old Ubuntu version was using. Still different than the MS ones, though, which is going to cause some people problems. Also, the font anti-aliasing differences are again due to patents owned by other companies, but there's good news there. They're supposed to expire later this year so better font rendering in Linux should be coming soon! You can already get it working manually, but the distros make it hard to setup.

    You mentioned you chose Ubuntu because it was supposed to be user-friendly, which I regard as one of the more puzzling wide-spread myths that go around. Sure, it's a lot simpler than Debian, or some other choices, but it is definitely NOT the distro to choose if you're looking to avoid the CLI, as you found out.

    On that note, I would HIGHLY encourage you to eventually go back and do another review (part 3?) that uses a KDE based distro. Maybe try out OpenSUSE next fall, for example. Although KDE is going through a bit of a transition now, it's definitely where all the more interesting stuff is going on. As you said, Gnome is a lot like a boring Windows XP environment, which is both a positive and a negative. KDE is quite different, for better or worse, and is worth a look I think. For one thing, that smb://COMPUTERNAME address will work out of the box in KDE apps. If you do try KDE, I highly recommend another distro besides (K)Ubuntu, though, because they simply don't put any resources into their KDE implementation and it shows.
  • leexgx - Wednesday, August 26, 2009 - link

    Ubuntu KDE has more options to play with that are missing in gnome (but gnome top is far better then KDE top, long time i used linux its task monitor, Linux verson of windows XP task manager but only the process page but very detailed)

    Ubuntu should be easy to use but it lacks the easy install for drivers and Still does not offer Fail save VGA mode if X windows fails to start your stuck with an command line, it should try an second time but in save mode vga but it does not
  • Badkarma - Wednesday, August 26, 2009 - link

    Thought I'd mention a linux specific site Phoronix has an "Open Letter to Tech Review sites" (http://www.phoronix.com/scan.php?page=article&...">http://www.phoronix.com/scan.php?page=article&....

    You mentioned linux on Netbooks, and thought I would mention that I found Moblin(www.moblin.org) from Intel very impressive. It's still in beta and a little rough around the edges, but it boots faster than xp resumes from hibernate, around 15sec from bios screen and the UI is designed around small screens. After using it for a few hours and then installing Windows 7, I immediately missed how well Moblin was optimized for the lowres small screen. I had to install W7 because the ath9k kernel module drivers are unstable in Moblin, if not for this I would probably keep it as the primary OS on my netbook.
  • colonel - Wednesday, August 26, 2009 - link

    I ve been using Ubuntu 9.0 for a year with my Dell notebook and i love it, I dont see limitations in my work, the only problem is my company doesn't allow it in the network but is my OS in the house
  • Eeqmcsq - Wednesday, August 26, 2009 - link

    I'm still reading it, but on my xubuntu 8.04, my firefox is located in /usr/bin/firefox. Most apps are under /usr/bin.

    Also, the directory structure is definitely VERY different from Windows. One main difference is that everything that belongs to the user is supposed to be under /home. Everything that belongs to the "system" is everywhere else. I think the theory is that the user stuff is "sandboxed" in /home, so he doesn't mess things up in the system for everyone else.
  • Penti - Tuesday, September 1, 2009 - link

    You have the same in Windows under %SystemDrive%\Documents and Settings\user Although many settings are stored in the register (which can be said to be the equivalent of /etc). It's however there programs like Firefox saves it settings and where you have your My Documents and tempfiles.

    * %SystemDrive% is a variable and substitute for your systems drive letter on which Windows is installed which can be something other then C:.
  • fepple - Wednesday, August 26, 2009 - link

    On the normal Ubuntu install, the /usr/bin/firefox is actually a symlink that points to the firefox install in /usr/lib :)
  • ioannis - Wednesday, August 26, 2009 - link

    the question is, who cares where firefox or any other application's binary is installed? It's not as if you'll go searching for it to run it. They are on your execution 'PATH', which means you can just press ctrl+F2 and type their name, or a terminal, or access them from the application menu.

    My favourite way is to use something like gnome-go (or krunner in Kubuntu)

    PS: yes, all package manager provided application have their binaries in /usr/bin and most user build ones go in /usr/local/bin by default, which is also in your $PATH.
  • fepple - Wednesday, August 26, 2009 - link

    As a developer that has to deal with custom paths or managing symlinks in default paths, I can say I do care where binaries are located ;)

Log in

Don't have an account? Sign up now