Package: rubygems Version: 0.9.0-5 Severity: normal Tags: patch First, it is nice to have rubygems, thank you.
I think since Debian provides rubygems now, it should patch it to be a bit smarter about installed debian packages which provide the same functionality as gems. Example: aptitude install rake rails gem install mongrel gem will insist on installing dependencies, including rake. A really nicely patched up rubygems could autodetect the rake package. I accept, go on, and force "gem uninstall rake" right afterwards. Now mongrel doesn't want to start, because it *thinks* there is no rake available, without even trying. As a quick and dirty hack, I dropped the attached rubygems.rb in my $HOME/ruby/lib, added that path to $RUBYLIB, and everything seems to work just fine. My rubygems.rb wraps the original, and, on Gem::LoadError, tries to continue nevertheless, which just works if there are aequivalent files installed by debian packages. If not, it will fail later with a less descriptive error message. A second attached version tries to query dpkg to determine if it may continue or not, but I am not sure this is actually an improvement. Now this is a very ugly solution, and I am sure this could be done better by the rubygems package itself. As a quick fix, you could just append my file to rubygem's rubygems.rb. A comprehensive solution would be to have all ruby library packages install fake geminfo metadata, and rubygems to query that additionally when resolving dependencies. (Note: I do not want rubygems to add/remove deb packages, just recognize them!) Severity set to normal, as the current version of rubygems makes a mixed Debian-packages + gems system (for libraries) impossible, if any installed gems depend on installed debs, which is very likely. regards, Jürgen Strobel -- System Information: Debian Release: 4.0 APT prefers testing APT policy: (850, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.16-zerberos-2 Locale: LANG=C, [EMAIL PROTECTED] (charmap=ISO-8859-15) -- no debconf information -- The box said it requires Windows 95 or better so I installed Linux
# -*- ruby -*- #-- # Copyright 2007 by Jürgen Strobel # Free to use without any restrictions. #++ # This wraps rubygems.rb. # The mission is to patch up Gem.activate, so it doesn't complain # over non existing gems if an aequivalent debian package is installed. # If gems are installed, they are still used in preference over debs. # This is crude and pollutes $stderr. YMMV. require "/usr/lib/ruby/1.8/rubygems.rb" module Gem class << self alias activate_orig_debian activate def activate(gem, autorequire, *version_requirements) activate_orig_debian(gem, autorequire, *version_requirements) rescue Gem::LoadError => e $stderr << "Debug: Gem #{gem} not found, trying to continue\n" return true end end end
# -*- ruby -*- #-- # Copyright 2007 by Jürgen Strobel # Free to use without any restrictions. #++ # This wraps rubygems.rb. # The mission is to patch up Gem.activate, so it doesn't complain # over non existing gems if an aequivalent debian package is installed. # If gems are installed, they are still used in preference over debs. # This is crude and pollutes $stderr. YMMV. require "/usr/lib/ruby/1.8/rubygems.rb" module Gem class << self alias activate_orig_debian activate def activate(gem, autorequire, *version_requirements) activate_orig_debian(gem, autorequire, *version_requirements) rescue Gem::LoadError => e $stderr << "Debug: Gem #{gem} not found, maybe we can continue?\n" `dpkg -l "#{gem.name}" 2>/dev/null | grep '^ii'` if $?.success? $stderr << "Debug: #{gem.name}.deb is installed, trying to continue.\n" return true end f = `dpkg -l "lib#{gem.name}*-ruby*" 2>/dev/null | grep '^ii'` if $?.success? $stderr << "Debug: #{f.split[1]}.deb is installed, trying to continue.\n" return true end raise e end end end
signature.asc
Description: Digital signature