« Phantom Slime | Home | Phantom Hourglass Commercial »
Deer vs. Chameleon, Package Maintenance
By Corvus | June 15, 2007
Some time ago I promised a comparison between openSUSE and Kubuntu’s package maintenance systems. Although you’ve no doubt heard nightmarish stories about compiling software for Linux systems, both of these distributions take advantage of systems that allow you to download and install pre-compiled software from enormous online repositories. openSUSE uses the Redhat Package Manager (rpm) and Kubuntu uses Advanced Packaging Tool (apt). Additionally, both distributions provide user friendly GUI tools to manage installs and upgrades.
First off, let’s compare my experiences with the underlying tools, rpm and apt. Both systems provide tools to install and manage software from a command line interface (CLI).
I would use only use the rpm command as a last resort, typically when installing proprietary hardware drivers from NVIDIA. It worked fine, but the single tool has a myriad of switches that had to be passed to it, often several switches for even simple tasks, and if I needed something other than the usual install or upgrade, I had to scan the man(ual) pages, looking for the right combination of letters to use. I never experienced the dependency hell* that plagued (plagues?) Redhat’s distro, although I’ve heard plenty of people malign the rpm system. How much of this is due to improvements made by Redhat and how much is due to openSUSE’s YaST, I don’t know.
Apt, on the other hand, is a delight to use. I frequently find myself opening a terminal window and installing a package from the command line. Furthermore, Kubuntu has a python script in place that, when I try and launch an application which isn’t installed, lets me know what package I can install to get the application, even going so far as to provide me with the exact command! Apt’s error messages are, so far, much more clear than rpm’s as well. If something didn’t work, or I’m barking up the wrong tree, apt provides me with clear results in English like, “The latest version of the package is already installed and doesn’t need updating.” As hackery as I like to be at times, I also appreciate clear communication.
Most often, though, I find myself relying on the GUI interface for both package management systems. I used to think that openSUSE’s YaST was a pretty good tool. Sure, it was really slow and over the last few versions of their distro it’s gone through some pretty heinous growing pains, losing repositories, occasionally failing to upgrade key packages properly, and not syncing the install repository information with the upgrade repository information which it kept in two separate lists. The updater which sits in the system tray wasn’t as configurable as I would have liked and would sometimes crash and not work at all. Still, I thought, it’s better than compiling it all from source or manually editing a bunch of configuration files…
Kubuntu (which uses my preferred desktop environment, KDE) installs a GUI apt interface called Adept, while Ubuntu (which uses the Gnome desktop environment) uses Synaptic. I’ve been just about as impressed with Adept as I have been with apt. Adept has three primary components, a package system manager, a package installer, and a package updater. I’ve set the updater to check for updates once a day, so it runs first thing in the morning, flashes green in the system tray if everything is up to date and… goes away. If packages need to be updated, I click the icon, type my admin password, click update and I’m done. Every element of Adept is faster than YaST. The software itself runs faster, installs faster, and shuts down faster. It’s really quite impressive. The Adept installer is a very friendly and simple tool which gives you the option of choosing from applications by their common use name, Open Office, or Frozen Bubble, for example. There are big happy icons and it’s pretty user friendly. Adept manager gives you more options, listing applications by their package’s file name, providing access to libraries, source code, etc. The manager also lets you add new repositories and manages their PGP encryption keys.
One of the reasons it’s taken me so long to get around to this second post is that I originally thought I’d use the blog as my debating stump as I decided which distro I was most at home in. Thanks in no small part to Kubuntu’s package management tools, I actually made my decision a couple days into using the new distro and deleted my old openSUSE partition.
So here I am, watching distro after distro sign agreements with Microsoft (one of my motivators for switching was the Novell signing on to the MS patent protection racket), wondering if Canonical Ltd. (Ubuntu’s sponsor) is going to give in to Microsoft’s bullying next. But while I’m here, I’m loving my Linux distro even more than I was before.
*Unlike typical Window’s installers which usually bundle every single software library and supporting piece of software you might need and install it right alongside the application you wanted to install, Linux install packages typically assume you know how to find and install the needed software all by yourself. The primary benefit to this is that a) installer file sizes are much smaller under Linux and b) you don’t end up with multiple versions of the same library sitting on your hard drive (which can lead to instability and speed issues) unless you explicitly muck it up yourself. Modern distributions typically manage these dependencies for you, installing extra packages as needed.
Tagged:Linux. | 8 Comments »






June 15th, 2007 at 10:35 am
You’re comparing apples and oranges.
rpm is to dpkg as yum is to apt
I know Suse has YAST, but I don’t have enough experience with YAST to say whether it is based on yum or is equivalent to yum. Yast does seem to be more analogous with debian’s synaptic or dselect, but I remember there being some switches with yast that allowed you to bypass the frontend so you could install a package immediately.
Also, one should not forget that most distributions allow you to install other package managers. After struggling with YAST for some time I ended up installing Smart to manage my packages. It was faster, but still slower and more cumbersome than apt*.
*but then I’m just a debian kinda guy.
June 15th, 2007 at 10:59 am
No, at worst I’m comparing green grapes to red grapes. This isn’t meant to be a comparison of the underlying technologies per se, but a comparison of two different experiences of managing software packages on my system.
Googling answers to common question about either distro inevitably leads to answers involving YaST, rpm, Adept/Synaptic and apt. It’s not unreasonable to compare the default package handlers from two distros based upon end user experience.
YaST is/was an rpm front end and handles things that rpm doesn’t (like dependencies). openSUSE is migrating it to YUM, I believe, and that migration is part of the issues with stability, speed and the trouble syncing YaST data with upgrade data.
June 15th, 2007 at 11:21 am
I think your experiences in managing packages, however, was not the same on both systems.
For example, if you started off using GUIs you would compare Synaptic, Adept, and YAST, rightfully so.
But when you drop into the command line, the comparison would be between apt and YAST’s command-line tools.
The equivalent of using rpm to install rpms is using dpkg to install .debs, not using apt to find, search, auto-download dependencies, and see descriptions.
I think that while your experience played out in one way, I still don’t think it’s valid to compare rpm to apt and use that as a premise in your discussion of package management in Suse versus *Ubuntu. It’s equivalent to saying Fords are worse than Toyotas after having driven an 86 Ford and a 95 Toyota (yes, I’ve only ever bought used cars). Suse DID have a better option for command-line package management than rpm, it just seems you didn’t use it.
June 15th, 2007 at 11:38 am
Hm… in my experience ‘yast’ from the command line opens a ncurses GUI which was a pain to navigate and hardly as friendly as apt-get.
Still, I get your point. I used the rpm command to install a locally downloaded rpm. I don’t think I’ve had to install a locally downloaded .deb file yet as most people provided their .debs in a repository.
I still maintain that, from an experiential standpoint, I’m making a valid comparison. Within one day of installing SUSE, the very first time mind you (pre-Novell days), I downloaded an rpm and used the rpm command as directed by a solution I found online. I have yet to need dpkg and I have the exact same functionality as I did under openSUSE.
To borrow your analogy, it’s much more like saying that 86 Fords lacked some of the comfort and features of a 95 Toyota and isn’t it grand that advancements are being made in design and functionality?!
June 15th, 2007 at 2:26 pm
Or perhaps it all comes down to the fact that the 86 Ford manual forgot to discuss how to use cruise control so you missed out on the ease of use provided. I agree that the ncurses based yast wasn’t very good, not nearly as good as dselect, which is the debian equivalent.
I did some digging, and it seems that yum is installed in openSuse by default, maybe? But also, it seems that yum isn’t configured with repositories by default, rendering it effectively useless. If this is the case (or if yum isn’t even setup), you obviously can’t be slighted for not using yum, because Suse wasn’t setup for you to use it.
I think it’s pretty sad that openSuse isn’t setup by default with a “modern” command-line package manager complete with repositories. YAST was one of the main reasons I dropped Suse after only a few months of using it.
You might want to look into Linux Mint, which is Ubuntu-based distro that adds an extra repository for non-free features, like MPlayer with mpeg, avi, and wmv codes, which most distros shy away from. Mint has a Gnome and a KDE version as well, though it’s still very new.
June 15th, 2007 at 3:01 pm
Yum is now installed by default, although it wasn’t when I started using SUSE. As I said, from what I’ve read they are transitioning YaST to YUM. The updated portion of their package maintenance already relies on it, which is what caused the repository replication issues between YaST (which could still use non-YUM repositories) and the updater which started as a ZYPP thing, but has now evolved.
I already have all the non-OSS repositories I need (thus far) set up in Kubuntu. I have all the codecs working and I can even play DVDs. Thanks for the Mint tip though. I don’t know how interested I
am in moving further downstream when the source (Debian) is only one hop upstream.
June 18th, 2007 at 12:27 pm
Separate from the discussion about using one package manager or another, the quote at the end made it seem like distribution of Linux-based software is lighter than the same software being distributed on Windows. If you make a 3rd party game, sell it, and insist that the customer should know where to find the required libraries, it would leave a bad taste in the customer’s mouth. From what I’ve seen, games generally provide streamlined libraries that they need. One game checked if you had all of the libraries on your system, and if one of them was missing, it used the libraries it provided. Even then, the libraries were provided, so the download wasn’t smaller.
Now that my project is nearing completion, distribution is becoming a big concern, specifically distributing something that will run on most machines without a problem.
June 18th, 2007 at 12:40 pm
Ah, but wouldn’t a better solution be to open your source code and get it included in the official repositories of the distributions?
Or, if you’re unwilling to take that step, maintain a repository for RPM, YUM, and APT? That way, your Linux users can take advantage of their package managers and get a smaller download.