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

  • ParadigmComplex - Wednesday, August 26, 2009 - link

    I concur - while most of the article is quite good, Ryan really seemed to have missed quite a bit here. His analysis of it seemed rather limited if not misleading.

    Not everything *has* to be a package - I have various scripts strewn around, along with Firefox 3.6a1 and a bunch of other things without having them organized properly as .deb's with APT. The packaging system is convenient if you want to use it, but it is not required.

    Additionally, Ryan made it seem as though everything must be installed through Synaptic or Add/Remove and that there where no stand-alone installers along the lines of Windows' .msi files. It's quite easy on Ubuntu to download a .deb file and double-click on it. In fact, it's much simpler then Windows' .msi files - there's no questions or hitting next. You just give it your password and it takes care of everything else.

    The one area I agree with Ryan is that there needs to be an standardized, easy, GUI fashion to add a repository (both the address and key) to APT. I have no problems with doing things like >>/etc/apt/sources.list, but I could see where others may. I suspect this could be done through a .deb, but I've never seen it done that way.
  • Ryan Smith - Wednesday, August 26, 2009 - link

    Something I've been fishing for here and have not yet seen much of are requests for benchmarks. Part 2 is going to be 9.04 (no multi-Linux comparisons at this point, maybe later) and I'd like to know what you guys would like to see with respect to performance.

    We'll have a new i7 rig for 9.04, so I'll be taking a look at a few system level things (e.g. startup time) along side a look at what's new between 8.04 and 9.04. I'll also be taking a quick look at some compiler stuff and GPU-related items.

    Beyond that the board is open. Are there specific performance areas or applications that you guys would like to see(no laptops, please)? We're open to suggestions, so here's your chance to help us build a testing suite for future Linux articles.
  • cyriene - Monday, August 31, 2009 - link

    I'd like to see differences between PPD in World Community Grid between various Windows and Linux distros.
    I never really see AT talk about WCG or other distributed computing, but I figure if I'm gonna OC the crap out of my cpu, I might as well put it to good use.
  • Eeqmcsq - Thursday, August 27, 2009 - link

    Cross platform testing is pretty difficult, considering there are a multitude of different apps to accomplish the same task, some faster, some slower. And then there's the compiler optimizations for the same cross platform app as you mentioned in the article. However, I understand that from an end user's perspective, it's all about doing a "task". So just to throw a few ideas out there involving cross platform apps so that it's a bit more comparable...

    - Image or video conversion using GIMP or vlc.
    - Spreadsheet calculations using the Open Office Calc app.
    - Performance tests through VMware.
    - How about something java related? Java compiling, a java pi calculator app, or some other java single/multi threaded test app.
    - Perl or python script tests.
    - FTP transfer tests.
    - 802.11 b/g/whatever wireless transfer tests.
    - Hard drive tests, AHCI. (I read bad things about AMD's AHCI drivers, and that Windows AHCI drivers were OK. What about in Ubuntu?)
    - Linux software RAID vs "motherboard RAID", which is usually only available to Windows.
    - Linux fat32/NTFS format time/read/write tests vs Windows
    - Wasn't there some thread scheduling issues with AMD Cool and Quiet and Windows that dropped AMD's performance? What about in Linux?

    While I'm brainstorming, here's a few tests that's more about functionality and features than performance:
    - bluetooth connectivity, ip over bluetooth, etc
    - printing, detecting local/network printers
    - connected accessories, such as ipods, flash drives, or cameras through usb or firewire
    - detecting computers on the local network (Places -> Network)
    - multi channel audio, multi monitor video

    Just for fun:
    - Find a Windows virus/trojan/whatever that deletes files, unleash it in Ubuntu through Wine, see how much damage it does.
  • Veerappan - Thursday, August 27, 2009 - link

    I know you've said in previous comments that using Phoronix Test Suite for benchmarking different OSes (e.g. Ubuntu vs Vista) won't work because PTS doesn't install in Windows, but you could probably use a list of the available tests/suites in PTS as a place to get ideas for commonly available programs in Windows/OSX/Linux.

    I'm pretty sure that Unigine's Tropics/Sanctuary demos/benchmarks are available in Windows, so those could bench OpenGL/graphics.

    Maybe either UT2004 or some version of Quake or Doom 3 would work as gaming benchmarks. It's all going to be OpenGL stuff, but it's better than nothing. You could also do WoW in Wine, or Eve under Wine to test some game compatibility/performance.

    Once you get VDPAU working, I'd love to see CPU usage comparisons between windows/linux for media playback of H.264 videos. And also, I guess, a test without VDPAU/VAAPI working. Too bad for ATI that XvBA isn't supported yet... might be worth mentioning that in the article.

    You also might want to search around for any available OpenCL demos which exist. Nvidia's newest Linux driver supports OpenCL, so that might give you a common platform/API for programs to test.

    I've often felt that DVD Shrink runs faster in Wine than in Windows, so the time to run a DVD rip would be nice, but might have legal implications.

    Some sort of multitasking benchmark would be nice, but I'm not sure how you'd do it. Yeah, I can see a way of writing a shell script to automatically launch multiple benchmarks simultaneously (and time them all), but the windows side is a little tougher to me (some sort of batch script might work). Web Browsing + File Copy + Transcoding a video (or similar).

    Ooh... Encryption performance benchmarks might be nice. Either a test of how many PGP/GPG signs per second, or copying data between a normal disk partition, and a TrueCrypt partition. The TrueCrypt file copy test would be interesting to me, and would cover both encryption performance and some disk I/O.

    One last suggestion: Folding@Home benchmarks. F@H is available at least in CPU-driven form in Windows/Linux, and there's F@H benchmark methodologies already developed by other sites (e.g. techreport.com's CPU articles).

    Well, that's enough for now. Take or leave the suggestions as you see fit.
  • haplo602 - Thursday, August 27, 2009 - link

    you are out of luck here ... linux does not compare to windows because they are both different architectures. you already did what you could in the article.

    especialy in a binary distribution like Ubuntu, compilation speed tests are meaningless (but Gentoo folks would kiss your feet for that).

    boot up times are also not usefull. the init scripts and even init mechanisms are different from distro to distro.

    compression/filesystem benchmarks are half way usable. on windows you only have NTFS these days. on linux there are like 20 different filesystems that you can use (ext3/4, reiser, jfs and xfs are the most used. also quite many distros offer lvm/evms backends or software raid.

    I do not think there is much benchmarking you can do that will help in linux vs windows, even ubuntu vs windows because the same benchmars will differ between ubuntu versions.

    the only usable types are wine+game vs windows+game, native linux game vs same windows game (mostly limited to unreal and quake angines), some povray/blender tests and application comparisons (like you did with the firefox javascript speed).
  • GeorgeH - Wednesday, August 26, 2009 - link

    Not really a benchmark per se, but I'd be curious to know how the stereotypes of Windows being bloated and Ubuntu being slim and efficient translate to power consumption. Load and idle would be nice, but if at all possible I’d be much more curious to see a comparison of task energy draw, i.e. not so much how long it takes them to finish various tasks, but how much energy they need to finish them.

    In know that’d be a very difficult test to perform for what will probably be a boring and indeterminate result, but you asked. :)
  • ioannis - Wednesday, August 26, 2009 - link

    is there some kind of cross platform test that can be done to test memory usage? Maybe Firefox on both platforms? not sure.

    By "no laptops", I presume you mean, no battery tests (therefore power and as a consequence, heat). That would have been nice though. Maybe for those looking for a 'quiet' setup.

    but yes, definitely GPU (including video acceleration) and the GCC vs Visual Studio vs Intel compiler arena (along with some technical explanation why there are such huge differences)






  • ParadigmComplex - Wednesday, August 26, 2009 - link

    If you can, find games that are reported to work well under WINE and benchmark those against those running natively in Windows. It'd be interesting to see how the various differences between the two systems, and WINE itself, could effect benchmarks.
  • Fox5 - Wednesday, August 26, 2009 - link

    Number 1 use of Ubuntu is probably going to be for netbooks/low end desktops for people who just wanna browse the net.
    In that case, the browsing experience (including flash) should be investigated.
    Boot up time is important.
    Performance with differing memory amounts would be nice to see (say 256MB, 512MB, 1GB, and 2GB or higher). Scaling across cpus would be nice.

    Ubuntu as a programming environment versus windows would be good to see, including available IDEs and compiler and runtime performance.

    Ubuntu as a media server/HTPC would be good to see. Personally, I have my windows box using DAAP shares since Ubuntu interfaces with it much better than Samba. And as an HTPC, XBMC and Boxee are nice, cross-platform apps.

    Finally, how Ubuntu compares for more specific applications. For instance, scientific computing, audio editing, video editing, and image manipulation. Can it (with the addition of apps found through it's add/remove programs app) function well-enough in a variety of areas to be an all-around replacement for OSX or Windows?
    Speedwise, how do GIMP and Photoshop compare doing similar tasks? Is there anything even on par with Windows Movie Maker?
    What's Linux like game wise? Do flash games take a noticeable performance hit? Are the smattering of id software games and quake/super mario bros/tetris/etc clones any good? How does it handle some of the more popular WINE games?

Log in

Don't have an account? Sign up now