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