User:Sam/Portage help/Ruby dependency conflicts

From Gentoo Wiki
Jump to:navigation Jump to:search


Gentoo's eclasses for language support (or "bindings") have gone through several evolutions until the community largely settled on the "Python model" (now used for Lua and others).

Ruby, at the time of writing, hasn't (yet?) been adapted to this newer dependency model. This often leads to counterintuitive conflicts for users and confusing errors. It's not certain that the dependencies specified are completely accurate as-is or can be expressed as necessary.

For more on Ruby, see bug #424339, bug #444828, and bug #702266 for issues of that type. In a similar vein, there's also bug #513888.


Users of ~arch in particular will often see confusing autounmask messages from Portage requesting mixed RUBY_TARGETS be set.

The output may resemble something like:

root #emerge -p -uvDU @world
The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by dev-lang/ruby-3.0.0::gentoo
# required by dev-ruby/rubygems-3.0.6::gentoo[ruby_targets_ruby30]
# required by virtual/rubygems-15::gentoo[ruby_targets_ruby30]
# required by dev-ruby/rdoc-6.2.0::gentoo[-test,ruby_targets_ruby30]
>=dev-ruby/did_you_mean-1.3.1 ruby_targets_ruby30


  1. Remove all references to ruby_targets in /etc/portage. Find them via grep -rsin "ruby" /etc/portage.
  2. Use stable dev-lang/ruby, as shown (replace ~amd64 with your arch, -~* doesn't seem to work?)
    FILE /etc/portage/package.accept_keywords
    # Use stable Ruby to avoid conflicts and excessive package.use entries
    dev-lang/ruby -~amd64
  3. Perform a world upgrade.
  4. Depclean.