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.
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.