For a lot of reasons I often rely on a mixture of a Debian/Ubuntu pre packaged Ruby with a self compiled RubyGems. It helps you in situations where you don’t care that much about the Ruby interpreter itself but need an up to date RubyGems. While this is easy to install, you might run into trouble when installing packages that depend on Ruby and RubyGems, namely packages like „rubygems“, „rubygems1.8“ and „rubygems1.9“.
After unsuccessfully playing around with dpkg for a while (you can put packages on „hold“ which prevents them from being installed automatically, I came to the conclusion, the best way is to install a fake package that is empty but satisfies depencies.
So, here it is: The shiny new RubyGems 9.9.9 which delivers rubygems, rubygems1.8 and rubygems1.9 right away. Just install it (e.g. with dpkg) and you’ll be able installing packages that rely on a rubygems package.
In case you want to play around with the package and customize it to your needs, e.g. only deliver rubygems1.8 or rubygems1.9, take
1. Install equivs
$ sudo apt-get install equivs |
2. create a control file
$ equivs-control rubygems |
3. edit the control file
$ vim rubygems |
You can compare the default settings in the control file with the output of e.g. „apt-cache show rubygems“. The crucial field is „Provides:“ where you can put a comma separated list of packages you want to fake install. Choose a high version for there „Version: “ field as this will mark the package newer as the distribution’s own package. This prevents the packager from replacing it.
Section: universe/interpreters Priority: optional Homepage: http://www.screenage.de/blog/ Standards-Version: 3.6.2 Package: rubygems Version: 9.9.9 Maintainer: Caspar Clemens Mierau <[email protected]> Provides: rubygems1.8,rubygems1.9,rubygems Architecture: all Description: Fake RubyGems replacement This is a fake meta package satisfying rubygems dependencies. . This package can be used when you installed a packaged ruby but want to use rubygems from source and still rely on software that depends on ruby and rubygems |
4. build the package
$ equivs-build rubygems |
p.s.: You can also use equivs for easily building meta packages containing a list of packages you want to install at a glance, e.g. for semi automated server bootstrapping.