Bug 1120898

Summary: _mri_ is not the default runtime
Product: [Fedora] Fedora Reporter: Michael Schwendt <bugs.michael>
Component: rubypickAssignee: Vít Ondruch <vondruch>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 20CC: vondruch
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-07-18 12:59:19 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Michael Schwendt 2014-07-18 00:00:58 UTC
File /usr/share/doc/rubypick/README.md claims the default runtime would be _mri_.

On the contrary, java is spawned by default for a spam filter script with a /usr/bin/ruby shebang, slowing down its execution a lot. Verifying the invocation:

$ ruby /bin/bsfilter 
LoadError: no such file to load -- sdbm
      require at org/jruby/RubyKernel.java:1027
      require at /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55
  get_options at /bin/bsfilter:3179
        setup at /bin/bsfilter:3341
       (root) at /bin/bsfilter:3492

And:

$ ruby _mri_ /bin/bsfilter 
Couldn't find /usr/bin/ruby-mri, use 'yum install /usr/bin/ruby-mri' to install it.

Version-Release number of selected component (if applicable):
$ rpm -q rubypick
rubypick-1.1.1-1.fc20.noarch

Something's not right here, and it hasn't been like that before.

Comment 1 Vít Ondruch 2014-07-18 12:59:19 UTC
Yes, it is default runtime in case it is installed. Since you have not installed ruby package, it can't be used. Once you'll do what is suggested, then it will be preferred.

Not sure how jruby get installed onto your system, but if you had no ruby implementation installed before, then yum/dnf decides what will be installed, if package depends on ruby(release) virtual provide. It would be nice, if yum/dnf could somehow prioritize packages, which provides the same provide.

Comment 2 Michael Schwendt 2014-07-19 22:44:18 UTC
> Not sure how jruby get installed onto your system

Something may have pulled it in as there are many hundreds of packages that depend on jruby somehow whereas only 120 packages depend on ruby:

# repoquery --whatprovides '/usr/bin/ruby'
rubypick-0:1.1.1-1.fc20.noarch
rubypick-0:1.1.0-2.fc20.noarch

# repoquery --whatprovides 'ruby(runtime_executable)'
ruby-0:2.0.0.247-15.fc20.i686
ruby-0:2.0.0.247-15.fc20.x86_64
jruby-0:1.7.2-5.fc20.noarch
ruby-0:2.0.0.353-16.fc20.i686
ruby-0:2.0.0.353-16.fc20.x86_64

# repoquery --whatrequires ruby|wc -l
120

# repoquery --whatrequires jruby|wc -l
680

# repoquery --exactdeps --whatrequires jruby
jruby-devel-0:1.7.2-5.fc20.noarch
jruby-javadoc-0:1.7.2-5.fc20.noarch
jruby-yecht-0:1.7.2-5.fc20.noarch

Comment 3 Vít Ondruch 2014-07-21 07:41:35 UTC
Well, I opened this ticket:

https://bugzilla.redhat.com/show_bug.cgi?id=1121538

This could help to narrow the issue. I'd say that jruby is preferred just because 'j' comes earlier in alphabet then 'r' and that is quite poor reason to prefer some package over other :/