gpt4 book ai didi

ruby - Ruby 中的加载错误

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:23 24 4
gpt4 key购买 nike

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

~$ ./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>

我知道一些标准模块需要罚款,而另一些则不需要。如果我说 require 'yaml' 或什至 require 'digest' 那么就可以了。我正在使用带有 Ruby 1.9.1-p378 的 OS X 10.5.8。 Ruby 1.8.6 的系统范围安装工作正常。

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

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

最佳答案

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

很遗憾,您无法通过自制软件安装 openssl。但是,显然,如果您使用的是 macports,则有一个可用端口:sudo port install openssl

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

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 之间切换:

rvm use system
ruby --version # => 1.8
rvm use 1.9.1
ruby --version # => 1.9.1

我自己编译了很长时间,甚至自己写了一个管理更新的小脚本。但是 RVM 在处理这个问题上要好得多。如果您打算尝试 RVM,只需访问 freenode 的#rvm channel ,那里的人们总是愿意提供帮助。

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

康斯坦丁

关于ruby - Ruby 中的加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com