在Ubuntu 10.04上安装RSRuby

3
我正在尝试在Ubuntu 10.04上安装RSRuby。我几乎不知道要报告哪些错误消息是相关的; 我已经在谷歌上搜索了数个小时,尝试的所有命令都无法解决问题。
以下是一些示例错误消息:
$ sudo gem install rsruby -- --with-R-dir=/usr/lib/R
Building native extensions.  This could take a while...
ERROR:  Error installing rsruby:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb --with-R-dir=/usr/lib/R
checking for main() in -lR... yes
checking for R.h... no

ERROR: Cannot find the R header, aborting.


Gem files will remain installed in /var/lib/gems/1.8/gems/rsruby-0.5.1.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/rsruby-0.5.1.1/ext/gem_make.out

或者使用apt-get进行操作:

$ sudo gem install rsruby --include-dependencies -- --with-R-dir=/usr/lib/R/lib64/R --with-R-lib=/usr/lib/R/lib64/R/bin --with-R-include=/usr/lib/R/lib64/R/include
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Building native extensions.  This could take a while...
ERROR:  Error installing rsruby:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb --with-R-dir=/usr/lib/R/lib64/R --with-R-lib=/usr/lib/R/lib64/R/bin --with-R-include=/usr/lib/R/lib64/R/include
checking for main() in -lR... no

ERROR: Cannot find the R library, aborting.


Gem files will remain installed in /var/lib/gems/1.8/gems/rsruby-0.5.1.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/rsruby-0.5.1.1/ext/gem_make.out

我也从GitHub获取了最新的RSRuby,并按照其2006年PDF手册的说明进行操作:

$ ruby setup.rb config -- --with-R-dir=/usr/lib/R
---> lib
---> lib/rsruby
<--- lib/rsruby
<--- lib
---> ext
/usr/bin/ruby1.8 /home/mars/R/rsruby/ext/extconf.rb --with-R-dir=/usr/lib/R
checking for main() in -lR... yes
checking for R.h... no

ERROR: Cannot find the R header, aborting.
*** /home/mars/R/rsruby/ext/extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=/home/mars/R/rsruby/ext
    --curdir
    --ruby=/usr/bin/ruby1.8
    --with-R-dir
    --with-R-include
    --without-R-include=${R-dir}/include
    --with-R-lib
    --without-R-lib=${R-dir}/lib
    --with-Rlib
    --without-Rlib
setup.rb:655:in `command': system("/usr/bin/ruby1.8" "/home/mars/R/rsruby/ext/extconf.rb" "--with-R-dir=/usr/lib/R") failed (RuntimeError)
    from setup.rb:660:in `ruby'
    from setup.rb:1238:in `extconf'
    from setup.rb:1230:in `config_dir_ext'
    from setup.rb:1532:in `__send__'
    from setup.rb:1532:in `traverse'
    from setup.rb:1549:in `dive_into'
    from setup.rb:1530:in `traverse'
    from setup.rb:1524:in `exec_task_traverse'
    from setup.rb:1519:in `each'
    from setup.rb:1519:in `exec_task_traverse'
    from setup.rb:1223:in `exec_config'
    from setup.rb:991:in `exec_config'
    from setup.rb:826:in `__send__'
    from setup.rb:826:in `invoke'
    from setup.rb:773:in `invoke'
    from setup.rb:1578

irb 中:

irb(main):002:0> require 'RSRuby'
LoadError: no such file to load -- RSRuby
    from (irb):2:in `require'
    from (irb):2
    from :0
irb(main):003:0> rsruby
NameError: undefined local variable or method `rsruby' for main:Object
    from (irb):3
    from :0

有时候我看起来似乎能够得到一些看起来像是可行的东西,但仍然无法在irb命令行中加载rsruby

$ sudo gem install rsruby --include-dependencies -- --with-R-dir=/usr/lib/R --with-R-lib=/usr/lib/R --with-R-include=/usr/share/R/include/
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Building native extensions.  This could take a while...
Successfully installed rsruby-0.5.1.1
1 gem installed
Installing ri documentation for rsruby-0.5.1.1...
Installing RDoc documentation for rsruby-0.5.1.1...

那么

$ irb
irb(main):001:0> require 'rsruby'
LoadError: no such file to load -- rsruby
    from (irb):1:in `require'
    from (irb):1
    from :0

Ruby 的版本是 1.8.7,我今天使用了 sudo apt-get install ruby1.8-dev 命令,但我不确定这是否会让情况变得更糟、更好或者没有变化。或者在 ruby1.9 中更容易解决。

R 可以正常工作。

4个回答

6

我不会读日文,但是这个方法在我的Ubuntu 10.10和Ruby 1.9上有效: http://d.hatena.ne.jp/cuspos/20090520/1242825057

# gem install rsruby-0.5.1.1.gem -- --with-R-dir=/usr/lib/R --with-R-include=/usr/share/R/include 
Building native extensions.  This could take a while...
Successfully installed rsruby-0.5.1.1
1 gem installed
# export R_HOME=/usr/lib/R
# irb 
irb(main):001:0> require 'rsruby'
=> true
irb(main):002:0>

gem install rsruby -- --with-R-dir=$R_HOME 请执行上述命令以安装rsruby,并确保将$R_HOME替换为您的R目录路径。 - s2t2

3
你可能需要检查一下你的PATH变量或动态链接是否设置正确,以便Ruby和相关工具能够“找到”正确的位置。Ruby似乎期望RSruby在/var/lib/gems/1.8/gems/rsruby-0.5.1.1//usr/lib/ruby/1.8/rubygems/或者/var/lib/gems/1.8/gems/rsruby-0.5.1.1/lib/中,而你的配置报告显示它安装在/usr/bin/ruby1.8 /home/chris/R/中。我没有太多Linux经验,但我知道每个发行版对于安装的可执行文件所期望的位置都是不同的。

是的,问题可能是因为从Github获取的版本的设置没有以sudo身份运行。但坦白地说,“每种组合试错”的方法只会制造混乱,除非有人坐在机器旁诊断,否则很难诊断出问题所在。 - neilfws
那种情况更可能导致根本没有安装,因为您没有写入文件的权限。 - IRTFM
不,如果没有sudo,大多数宝石将安装到$HOME/.gem。 - neilfws
1
你的问题中第一次尝试表明它找不到 R.h 文件。请查找 R.h 文件的位置并确保此路径在您的 PATH 中。 - Paul Hiemstra
1
对于像我这样阅读了这个答案然后想:好的,“PATH变量或动态链接”是什么?的人,请参考http://askubuntu.com/questions/60218/how-to-add-a-directory-to-my-path/60219。 - isomorphismes

0

你使用 apt-getgem install 的尝试表明安装程序无法找到 R 头文件。我建议先解决这个问题,而不是尝试其他安装 RSruby 的方法。下一个问题是为什么它无法找到 R 头文件,有两种可能:

  • 头文件已安装,但无法找到。使用 locate R.h 查找 R 头文件的位置,并确保其在你的 $PATH 中。
  • 头文件安装(我怀疑是这种情况)。通常安装头文件需要安装开发包。尝试查看是否有类似 R-dev 的软件包,其中包含 R 头文件等内容。可以使用 apt-get 安装此 R-dev。我认为 Ubuntu 10.04 中的标准版本 R 并不是最新的。CRAN 有 ubuntu repositories,其中 dev 包称为 r-base-dev。将此存储库添加到你的 sources.list 中,即可通过 apt-get 从 CRAN 获取最新版本的 R。

-1

您已成功安装rsruby,正如您第5个示例的输出所示:

Successfully installed rsruby-0.5.1.1
1 gem installed

由于使用了Ruby 1.8.7,库在irb中未加载,您需要先执行"require rubygems"。请在irb中尝试以下操作:
require 'rubygems'
require 'rsruby'

irb(main):001:0> 需要 'rubygems' => true irb(main):002:0> 需要 'rsruby' LoadError: libR.so:无法打开共享对象文件:没有那个文件或目录 - /var/lib/gems/1.8/gems/rsruby-0.5.1.1/lib/rsruby_c.so from /var/lib/gems/1.8/gems/rsruby-0.5.1.1/lib/rsruby_c.so from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in require' from /var/lib/gems/1.8/gems/rsruby-0.5.1.1/lib/rsruby.rb:2 from /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in gem_original_require' from /usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' from (irb):2 from :0 - isomorphismes
啊,那种情况下你还没有成功安装rsruby :-) - neilfws
这个问题在我的RSS订阅中重新出现了。正如我第一次所说的,你至少安装尝试成功了一次,如安装消息所示。问题在于你尝试了很多东西,导致系统混乱不堪。你需要清除任何与rsruby有关的东西,然后再试一次。 - neilfws

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接