Tuesday, August 19, 2008

Dependencies

I've been running Ubuntu linux on an extra machine for a while now, although not using it for day-to-day work. I spend most of my time trying to download and install various free software that eats up many hours of my precious time. If I could bill for those hours, I could practically give up all of my consulting clients.

In a few weeks, however, I'll be taking off on a 6-week trip with an Ubuntu laptop as my only computing device, and admittedly this worries me a bit. Basically, most everything that I need to do can be done nicely in Ubuntu -- I have my office suite, my browser, Skype. I'm all set... as long as I don't need to install any new programs.

The nerd world touts linux as far superior to Windows, but I think it's only fair to recognize that there is one huge barrier to having linux take over the desktop, and that is: dependencies. Many linux programs do not come as stand-alone code, but depend on your system to have certain other bits of code installed. In essence, to install these programs you need to re-create the computing environment used by the developer. Sometimes that's not a problem because the developer used only modules that come with the operating system's normal install. But I've found that I'm often required to chase around the Net looking for less common bits and pieces, some of which may require me to compile them myself. And where on Windows and the Mac the installation instructions are simply "double-click on the downloaded file," instructions for the installation of linux programs can go on for pages (and invariably leave out at least one essential step).

Ironically, what this means is that linux is a powerful tool for developers, but simple "users" of the operating system have less available to them than they do on Windows or a Mac because it's just too hard to participate in the "Open Source revolution." I really want to try out OS software that's coming out of the library community, but I have yet to get any of it to run. I don't think I'm stupid -- I've solved some problems on my own, but never all of them.

I suppose I shouldn't worry too much about this. Both of the computers I have running Ubuntu at the moment are unable to process any updates due to mysterious problems caused by running the normal update procedure. I've posted to the Ubuntu forums and my message seems to be the only one that keeps getting zero answers. My rule now is to store nothing of importance on either machine and to keep a boot CD with me. The main thing is that I'm not giving up yet.

8 comments:

Erik Hetzner said...

It is hard to install a lot of open source software from scratch. The instructions tend not to be complete or to be somewhat inaccurate.

I have found that Ubuntu (esp. if you enable to Universe repositories; google "ubuntu enable universe" for how to do this) has almost without fail every software package I want to install packaged. And I personally find these packages much easier to deal with than the installer packages used with Windows. They are upgraded when you upgrade your OS, they are easily removed, and they work well with other software on my system.

As to your particular situation with a broken upgrade, generally the key to fixing this is running (from the command line; there may be a way to do this in synaptic but I don't know it):

sudo apt-get install -f

That will try to track down & fix any package dependency problems. After that I would re-run:

sudo apt-get dist-upgrade

to ensure that everything got upgraded properly when you where upgrading your system.

PS: I'm surprised you didn't get any help the ubuntuforums.com. I am always surprised how active those are.

Best of luck!

Anonymous said...

Maybe a link to the forum? You have a few regular readers who are also ubuntu users. It would certainly be better than trying to diagnosis the problem on your blog ;).

Anonymous said...

Oh, also, what library apps are giving you trouble? I imagine that would be pretty valuable feedback for those projects ;).

lbjay said...

Hi Karen,

I'm wondering what you mean by "normal update procedure"? I'm guessing you mean the Update Manager available through the System -> Administration menu, but Ubuntu/Debian has a few update mechanisms with varying degrees of automation. All, however, are built on top of the apt package management system.

If the update system is wedged you might try dropping down to a shell and running "apt-get -f install" which will "attempt to correct a system with broken dependencies in place".

As for the bits and pieces, you didn't say what software you're trying to install, but another handy tool for package searching is synaptic. A command-line alternative would be "apt-cache search [keyword]", followed by "apt-get install [package(s)]".

Karen Coyle said...

Thanks for all the replies. First, I am now finally getting an answer to my third post on one of my update problems. I've done the install -f many times (yes, I know that it is magical thinking to do it more than once). Although I appreciate the answers, my point is basically that it shouldn't be this easy to get broken.

But if anyone wants to join in:
http://ubuntuforums.org/showthread.php?t=894480

As for library OS software, I'm still struggling with Koha. I'd love to recommend it to folks I met in Kosovo, but they'll have even less of a chance of getting it running than I will (e.g. language problems + low unix skills). I'm struggling with... dependencies. Zebra. Yaz. etc. Eventually I'll find time on code4lib IRC, but my main conclusion is that it's not an easy install, and someone should figure out a way to bundle all of those required library apps with the Koha software -- just zip them together in the same file, for pete's sake, eh? Also, when I go into the indexdata download area, there's a ton of files and I have no idea what the differences are. Shouldn't they just have a web page with the latest, or the last few? And shouldn't they explain the difference between the files: http://ftp.indexdata.dk/pub/yaz/debian/etch ?. Perhaps it's obvious to some the difference between libyaz3_dev and libyaz3, and all of the other files in there, but I found it daunting, and perhaps chose the wrong one. Again, they are obviously expecting seasoned developers to be their users, but this sorely limits their user base.

lbjay said...

>> "someone should figure out a way to bundle all of those required library apps with the Koha software"

Sounds like a job for a VMWare virtual appliance. Google turns up one for Koha 2.2.7.

Erik Hetzner said...

Ok, posted a reply in ubuntuforums.

As for indexdata stuff, all those packages are meant to be added to your /etc/apt/sources.list file for automatic installation.

Here are some instructions:

http://www.indexdata.dk/zebra/doc/installation-debian.tkl

The general problem with packaging is that it takes a lot of time to get right. (And, to be honest, a lot of developers find it boring.) Even getting an install to work on one particular version of Ubuntu is not easy; & Ubuntu is just one Linux distro. Getting something to work reliably across Linux distros, not to mention across Unixes, is a huge task.

Anonymous said...

I'd recommend sharing your problems with the Koha mailing list. This will connect you with others who have had similar experiences. http://koha.org/community/mailing-lists.html