2010-06-24

Installing software: Linux vs. Windows

I wanted to install the MySql Workbench on my Linux development box. My experience only reaffirmed my position that, despite the many advances made over the years, Linux still isn't quite ready for the masses. I list these steps and problems here, not as a list of what could happen, but as a list of things that actually happened to me at least once during this process.

Although MySql Workbench is the product in question here, this could really apply to any piece of software (and, as noted, did apply to more than one of the libraries I had to try to install in the process).

  • First, I went to the download page for MySql Workbench. They had several packages available, but none that corresponded to my particular version of Linux (CentOS 5.5, roughly equivalent to Red Hat Enterprise Linux 5.5). So, it seemed I was bound to compile from source.
  • I downloaded the source package, unzipped it, and ran ./configure. It proceeded to run a bunch of checks on my system, ultimately stopping when it could not find a certain library it considered critical. I checked the package repository (using whatever GUI front-end to "yum" that comes with CentOS), and found it. Although I did have the library installed, I didn't have the library-devel package installed, which I guess is required for compiling programs against it.
  • Development package installed, I ran ./configure again. And the check immediately after the previous library, it failed to find another critical library. Ok, go back to the software installer and… oh dear, it's not there. Search the internet, find a package for RHEL5, and install it.
  • Run ./configure again. Another library missing. Not in the package installer. Search the internet. No pre-compiled package this time; download the source code. Install library from source. (n.b.: This, and any other time I have to "install from source", means going through this whole series of steps/possibilities for that library. And yes, a library can have a dependency on yet another library [or series of libraries] that I have to go find and install, etc.)
  • Run ./configure. Wait, it says the library I just installed isn't installed. locate library; it's in /usr/local/lib instead of /usr/lib. Figure out how to configure pkg-config to include the other directory.
  • Run ./configure again. Another library problem — the version I have installed is too old. Newer version not in the package installer. Search the internet. No pre-compiled package. Download source. Install library from source. Run ./configure again. Still reporting library is too old. Attempt to remove old library from software manager; decide against it when software manager decides it wants to remove a host of other packages that depend on the existing one (as it is unaware of the newer version I just installed). Find the files that tell pkg-config what's installed, and remove the entries for the older version, so it won't see those before it sees the newer version. (n.b.: I discovered I could do this more easily by telling pkg-config to look in /usr/local/lib first, and /usr/lib second.)
  • Run ./configure again. Another missing library. Not in the package installer. Search the internet. No pre-compiled package. Download source. Attempt to compile library from source code, get an error. Search the internet. Find that someone has submitted a patch for that problem. Apply patch. Compile and install library.
  • Run ./configure again. Configuration completes. Attempt to compile. Get errors about missing symbols. Go online, find a reference to the problem and an invitation to join an irc chat room for support.
  • Install irc client and join chat room. Told that the version of Workbench is out of date, and given a link to the next version.
  • Go to link. Binary package is available — for RHEL6, not 5. Download the source. Run ./configure. Find another library that's too old. Download updated library, and updates of the libraries it depends on. Compile and install.
  • Run ./configure. pkg-config finds the updated version of the libraries, but the next check finds the old version, and demands that I uninstall the old version. Decide against it when I see that attempting to uninstall it from the package manager will uninstall over half of the packages on my system.
  • Decide to throw caution to the wind and download the RHEL6 binary package. Software installer complains that it depends on libraries I don't have and/or have old versions of, and it can't automatically find (including an updated version of some of the MySql database files themselves, which I could not accept, as I have to develop against a specific version of the database to provide accurate support); and it refuses to install.
  • Go to MySql download site. Download Windows version of Workbench to Windows workstation. Double-click installer. Enter connection credentials to database running on Linux. Connect successfully.

I like the idea of Linux; I really do. There are limitless possibilities with it. And I am reasonably confident that, if I ever did get this software installed, I wouldn't need to worry about it again. I have a Linux server at home that took me several days to set up, but once I got it running, I've rarely had to touch it. And on the occasions when I do decide to update it, it works pretty magically.

But when it takes two days of my time to attempt to install a utility — and ultimately failing — when I can do the same task (and succeed) on Windows in less than ten minutes (with most of that time spent downloading the file I want), sometimes I wonder if it'll ever make a viable replacement for an OS that, despite all its problems, most of the time "just works".

No comments: