首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby语言中的LoadError

Ruby语言中的LoadError
EN

Stack Overflow用户
提问于 2010-06-13 22:42:41
回答 1查看 3.8K关注 0票数 2

我遇到了一些需要'digest/sha1'的问题。

代码语言:javascript
复制
~$ ./configure --prefix=$HOME/usr --program-suffix=19 --enable-shared
~$ make
~$ make install
~$ irb19
irb(main):001:0> require 'digest/sha1'
LoadError: dlopen(/Users/matan/usr/lib/ruby19/1.9.1/i386-darwin9.8.0/digest/sha1.bundle, 9): Symbol not found: _rb_Digest_SHA1_Finish
  Referenced from: /Users/matan/usr/lib/ruby19/1.9.1/i386-darwin9.8.0/digest/sha1.bundle
  Expected in: flat namespace
 - /Users/matan/usr/lib/ruby19/1.9.1/i386-darwin9.8.0/digest/sha1.bundle
    from (irb):1:in `require'
    from (irb):1
    from /Users/matan/usr/bin/irb19:12:in `<main>'
irb(main):002:0> 

我知道一些标准模块需要fine,而另一些则不需要,如果我说require 'yaml'甚至require 'digest',那就没问题了。我使用的是OS 10.5.8,带有Ruby 1.9.1-p378。Ruby 1.8.6在系统范围内的安装运行良好。

就在上周,我卸载并重新安装了Ruby。当我第一次安装Ruby时,我以类似的方式安装它,从我本地$HOME/usr目录的源代码开始安装。我试着删除make install安装的每个文件,然后重新安装,但没有帮助。

您是否知道问题是什么以及如何解决它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-16 19:56:06

这可能与OpenSSL有关(Ruby将OpenSSL用于MD5/SHA1,如果可用的话)。您可以通过编译较新版本的OpenSSL并自行链接到它(./configure ... --with-openssl-dir=path/to/openssl)来修复此问题。

不幸的是,您不能通过自制软件安装openssl。但是,显然,如果您正在使用macports,则有一个可用的端口:sudo port install openssl

但我推荐的是简单地使用RVM

代码语言:javascript
复制
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
rvm package install openssl
rvm install 1.9.1 -C --with-openssl-dir=$HOME/.rvm/usr

然后,您可以在1.8和1.9之间切换:

代码语言:javascript
复制
rvm use system
ruby --version # => 1.8
rvm use 1.9.1
ruby --version # => 1.9.1

我自己编译了很长一段时间,甚至写了自己的小脚本来管理更新。但是RVM在处理这件事上要好得多。如果你打算尝试RVM,只需在freenode上使用#rvm通道,人们总是愿意在那里提供帮助。

顺便说一句,1.9.1有很多粗糙的边缘,我宁愿建议切换到1.9.2分支(或者至少在发布后立即切换到1.9.2p0 )。

康斯坦丁

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3032601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档