【问题标题】:Passenger error "library not loaded"乘客错误“图书馆未加载”
【发布时间】:2010-11-23 08:41:12
【问题描述】:

从乘客那里得到这个错误(使用 Apache)。不知道是什么意思...

 dlopen(/path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): 
 Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib 
 Referenced from: /path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
 Reason: image not found - /path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

安装的 Ruby 实际上是 1.9.2,但无论出于何种原因,gem 都在这个“1.9.1”路径中......

这可能与我使用 mysql2 gem 而不是 mysql 的事实有关吗?

或者,它可能与第二行“Library not loaded”有关,它看起来可能试图加载错误的libmysqlclient.16.dylib?由于路径/usr/local/mysql 指向未运行的mysql 版本。正在运行的 mysql 版本在/usr/bin/我会尝试改变这一点,但我不知道怎么做!?!

【问题讨论】:

    标签: mysql ruby-on-rails passenger


    【解决方案1】:

    announcement for Ruby 1.9.2(原文如此)

    此版本是“库兼容版本”。 Ruby 1.9.2 几乎与 1.9.1 兼容,因此该库安装在 1.9.1 目录中。

    这就是 ruby 目录被命名为“1.9.1”的原因;这是正常的。


    您的 mysql2 gem 实例是针对 /usr/local/mysql/lib/libmysqlclient.16.dylib 库构建的。出于某种原因,该库当前在您的系统上以该路径名不可用(MySQL 已删除/移动/升级?)。


    您可能需要重建您的 mysql2 gem 并将其指向 MySQL 安装中的mysql_config(或mysql_config5)(在/usr/bin?):

    gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config
    

    【讨论】:

    • 谢谢!只是出于好奇,我正在学习,我会去哪里阅读这样的构建选项?我查看了 mysql2 文档 rubydoc.info/gems/mysql2> 但找不到任何提及。在 Rails 等中隐藏了这么多“幕后”……可能令人沮丧。
    • 这因宝石而异。在您的情况下,只是 mysql2 作者没有花费任何精力来编写正确的安装文档。在某些情况下,源代码是最好的“文档”。您应该就这个问题联系作者。其他作者(例如,我自己;))花费大量精力来编写适当的文档,同时涵盖安装问题。
    • @Meltemi:在源代码的一部分README file 的“Insalling”部分中有对此选项的间接引用。搜索出现 [mysql2 (已关闭) 问题 #63](github.com/brianmario/mysql2/issues/closed/#issue/63),它显示了确切的命令行。最后,我阅读了源代码以了解它是如何工作的:本机代码库通常位于ext,并且有一个名为extconf.rb 的“配置”文件,所以我查看了ext/mysql2/extconf.rb
    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2016-02-05
    相关资源
    最近更新 更多