Bug 13237 - msfconsole / msfcli do not start - metasploit needs update for newer ruby or dependencies missing ?
Summary: msfconsole / msfcli do not start - metasploit needs update for newer ruby or ...
Status: RESOLVED WONTFIX
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: 4
Hardware: All Linux
Priority: Normal normal
Target Milestone: ---
Assignee: Guillaume Rousse
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-04-19 20:04 CEST by Florian Hubold
Modified: 2014-04-29 21:18 CEST (History)
2 users (show)

See Also:
Source RPM: metasploit-4.5-4.mga4.src.rpm
CVE:
Status comment:


Attachments
svn diff of local cauldron checkout, updated to metasploit frameworks 4.9.2 (1.91 KB, patch)
2014-04-19 20:49 CEST, Florian Hubold
Details | Diff

Description Florian Hubold 2014-04-19 20:04:33 CEST
Description of problem:

[doktor5000@Mageia4 ~]$ msfconsole 
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- iconv (LoadError)
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/zip/zip.rb:3:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/zip.rb:1:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/db.rb:27:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/db_manager.rb:5:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/framework.rb:69:in `<class:Framework>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:13:in `<module:Msf>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:5:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core.rb:34:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui/console/driver.rb:2:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui/console.rb:11:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui.rb:11:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/bin/msfconsole:136:in `<main>'


[doktor5000@Mageia4 ~]$ msfcli
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- iconv (LoadError)
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/zip/zip.rb:3:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/zip.rb:1:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/db.rb:27:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/db_manager.rb:5:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core/framework.rb:69:in `<class:Framework>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:13:in `<module:Msf>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:5:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/core.rb:34:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui/console/driver.rb:2:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui/console.rb:11:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/share/metasploit/lib/msf/ui.rb:11:in `<top (required)>'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/share/metasploit/lib/fastlib.rb:374:in `require'
        from /usr/bin/msfcli:26:in `<main>'



I'm not into ruby, but either there are a lot of dependencies missing/not found or some semantics have changed. Maybe it needs a small change like http://stackoverflow.com/questions/16924370/how-fix-this-error-kernel-require-rb45in-require-cannot-load-such-file#comment24431625_16924370

This is what's currently installed rg. ruby:

[doktor5000@Mageia4 ~]$ rpm -qa | grep -e metasploit -e ruby | sort
lib64ruby1.9-1.9.3.p484-1.mga3
lib64ruby2.0-2.0.0.p247-8.mga4
metasploit-4.5-4.mga4
metasploit-gui-4.5-4.mga4
ruby-2.0.0.p247-8.mga4
ruby-RubyGems-2.1.11-3.mga4
ruby-atk-2.0.2-5.mga4
ruby-cairo-1.12.6-4.mga4
ruby-gdk_pixbuf2-2.0.2-6.mga4
ruby-glib2-2.0.2-7.mga4
ruby-gtk2-2.0.2-5.mga4
ruby-irb-2.0.0.p247-8.mga4
ruby-json-1.7.7-9.mga4
ruby-msgpack-0.5.8-3.mga4
ruby-pango-2.0.2-7.mga4
ruby-pkg-config-1.1.4-5.mga4
ruby-rdoc-4.0.1-7.mga4

Also tried removing the stale lib64ruby1.9-1.9.3.p484-1.mga3 (seems a leftover from mga3 -> 4 upgrade) but no change.

Reproducible: 

Steps to Reproduce:
Comment 1 Florian Hubold 2014-04-19 20:46:31 CEST
Seems metasploit is not compatible with ruby 2.0 check e.g. https://aur.archlinux.org/packages/metasploit/?comments=all
This was also mentioned in #metasploit, but seems it's not officially documented. metasploit upstream also only seems to use ruby-1.9.3.


I've updated metasploit to latest 4.9.2 in a local cauldron checkout, added ruby-bundler and ruby-activesupport as Requires, but now I'm stuck mith more missing ruby stuff, and seems ruby-bundler is also broken:

[doktor5000@Mageia4 SPECS]$ msfconsole 
Could not find gem 'timecop (>= 0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

[doktor5000@Mageia4 SPECS]$ bundle install timecop
ERROR: bundle install was called with arguments ["timecop"]
Usage: "bundle install".
[doktor5000@Mageia4 SPECS]$

[doktor5000@Mageia4 SPECS]$ bundle install
Bundler::GemfileNotFound


Seems our ruby stack is pretty borked to some degree. I leave it to you, if you want me to commit my changes or if you want to take a look yourself.

CC: (none) => doktor5000

Comment 2 Florian Hubold 2014-04-19 20:49:04 CEST
Created attachment 5125 [details]
svn diff of local cauldron checkout, updated to metasploit frameworks 4.9.2
Comment 3 Florian Hubold 2014-04-19 21:25:12 CEST
Hmmm, after installing *a lot* of gems via gem install, including some which we don't have packaged yet, still back to a similar error as initally reported:



[doktor5000@Mageia4 metasploit]$ msfconsole
There was an error while trying to write to Gemfile.lock. It is likely that 
you need to allow write permissions for the file at path: 
/usr/share/metasploit/Gemfile.lock

[doktor5000@Mageia4 metasploit]$ sudo msfconsole
/home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/xml_mini.rb:3:in `require': cannot load such file -- bigdecimal (LoadError)
        from /home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/xml_mini.rb:3:in `<top (required)>'
        from /home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/core_ext/hash/conversions.rb:1:in `require'
        from /home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/core_ext/hash/conversions.rb:1:in `<top (required)>'
        from /home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/core_ext/hash.rb:2:in `require'
        from /home/doktor5000/.gem/ruby/gems/activesupport-4.1.0/lib/active_support/core_ext/hash.rb:2:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/core/module_manager/module_paths.rb:5:in `require'
        from /usr/share/metasploit/lib/msf/core/module_manager/module_paths.rb:5:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/core/module_manager.rb:29:in `require'
        from /usr/share/metasploit/lib/msf/core/module_manager.rb:29:in `<class:ModuleManager>'
        from /usr/share/metasploit/lib/msf/core/module_manager.rb:21:in `<module:Msf>'
        from /usr/share/metasploit/lib/msf/core/module_manager.rb:14:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:66:in `require'
        from /usr/share/metasploit/lib/msf/core/framework.rb:66:in `<class:Framework>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:13:in `<module:Msf>'
        from /usr/share/metasploit/lib/msf/core/framework.rb:5:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/core.rb:34:in `require'
        from /usr/share/metasploit/lib/msf/core.rb:34:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/ui/console/driver.rb:2:in `require'
        from /usr/share/metasploit/lib/msf/ui/console/driver.rb:2:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/ui/console.rb:11:in `require'
        from /usr/share/metasploit/lib/msf/ui/console.rb:11:in `<top (required)>'
        from /usr/share/metasploit/lib/msf/ui.rb:11:in `require'
        from /usr/share/metasploit/lib/msf/ui.rb:11:in `<top (required)>'
        from /bin/msfconsole:136:in `require'
        from /bin/msfconsole:136:in `<main>'




I've got a list of the gems and more details available if required.
Comment 4 Florian Hubold 2014-04-19 22:18:21 CEST
@Remy: Maybe you could also take a look for the ruby part?

CC: (none) => shikamaru

Comment 5 Florian Hubold 2014-04-20 14:42:42 CEST
For some definitive information:

ruby-1.9.3 is out of maintenance, it only receives security fixes until next year: https://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering

Recommended/preferred method of metasploit installation is via rvm, and even latest git wants an older patchlevel of ruby: ruby-1.9.3-p484


So for Mageia 4 and probably even 5 the mageia metasploit package will be unusable. What will we do about this?
Comment 6 Guillaume Rousse 2014-04-29 21:18:09 CEST
I'm dropping metasploit package in cauldron, it's a maintainance nightmare. Unfortunatly, there isn't much to do for mageia 4.

Status: NEW => RESOLVED
Resolution: (none) => WONTFIX


Note You need to log in before you can comment on or make changes to this bug.