Redmine, please copy Bugzilla

And other projects with multiple dependencies that depend on other things, please copy Bugzilla.

Redmine, like Bugzilla, has this library installation problem. I installed Redmine yesterday, and installed it and installed it and installed it.

I had just installed Xubuntu, so I didn’t even have ruby on the system, and then I couldn’t install the gems, until I found out the package name for “gem” is “rubygems”. That was my second guess, so I didn’t even have to go to Google.

You might think that a place like Redmine would have the list of dependencies in order, but no, the installer page lists “gem install rake” and “gem install rails” before they list “Rubygems 1.3.1 is required”. It’s something you only notice when you are new to installing apps for a specific language. (Note to self: set up an account on their bug site and tell them directly. 🙂 )

Yup, I just said I found the answer on their web page, one inch below the question, or maybe 3 cm.

Solution

After only 10 years, Bugzilla finally solved this problem in version 3.2, with a little help from Perl and CPAN. When you install Bugzilla, or update it, it checks if all the requirements are in place. That’s where it used to stop, with a list of work for you. Now it installs them for you. Yup, it asks first, because it wants to know if you want them in the “global” site library for Perl, or the “local” one for the Bugzilla user.

And then it goes off and gets them, and their dependencies, and their dependencies dependencies, and compiles things that need to be compiled and generally works hard while you work on something else, checking for any questions it might have.

Redmine, and many other apps, could learn from this.

Maybe Ruby can go one better, as a community, and create a generic dependency tool that takes your list of dependencies, and calls “gem” for you, installing the rubygem package, if necessary. You could call it an obvious name like “gemcase” if it’s available or come up with something creative.

This may seem obvious, but I will say it anyway: This gem installer thing can’t be a gem. More obvious stuff: The gem installer thing needs to know how to install rubygem on several OSes or platforms, including Microsoft platforms, by whatever name or means necessary on that platform. You should have it available in your top level folder when you untar your new toy, kinda like configure, although hopefully not so slow.

And no, you don’t want me to scratch this itch, or you might end up with a shell script. Although, maybe that’s just what you need here? 😉 Nah, you can assume Ruby is installed.

Advertisements

2 responses to “Redmine, please copy Bugzilla

  1. Uh… well.

    What used to happen with Bugzilla is that when you ran the perl-module-fixer-upper, it ran CPAN and happilly installed/updated all your perl modules.

    Fine, right?

    Well… except that now what was on the disk no longer resembles what your package manager thinks is on the disk. Which means the next time you run ‘yum install’ which catches a dependancy which Bugzilla installed but RPM hasn’t yet, or ‘yum update’ catches an RPM update for a module with the same name that your CPAN install has just upgraded… well, lets say hilarity ensues.

    It used to be that you could get “close enough” with RPM-based and custom-rolled-RPM perl modules that you could persuade Yum to leave the upgraded perl modules alone — but somewhere between 2.22 and 3.2 that changed, and now you can’t get a Bugzilla installed with RPM-provided modules.

    What I encourage people to do now is to create a VM for bugzilla — and ONLY bugzilla — then tell the Yum on that VM not to mess with the perl- RPMs. Then it no longer matters that whats on the disk disagrees with what the RPM database says is there.

    Auto-system-dependancy-updating is fine, as long as it doesn’t break the long-term maintainability of the overall system.

    Corollary: package management is HARD.

    • Hi Dave,
      My main point was that you can now replace CPAN, CPAN CPAN with one script. That saves a lot of trouble.

      As you say, I forgot the problem that when you use CPAN, it can conflict with OS packages. You’re right, that can be a problem.

      However, with Perl and Bugzilla, you can also create a user-level CPAN library, which will not conflict with OS packages. Then you just don’t install any extra Perl library packages with Yum or Apt, thus sidestepping that set of packaging issues.

      If you only have one major app (buzilla) per user (bugzilla user), it should work as well as separate VMs.

      As to your point that package management is hard, I agree. This solution only deals with one set of issues.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s