我在 DREAMHOST 上部署了一个 RoR 应用程序。这是当前正在运行的版本
- ruby : ruby 1.8.7(2011-06-30 补丁级别 352)[x86_64-linux]
- rails : rails 3.2.3
当我尝试加载主页时的错误如下:
libmysqlclient_r.so.16: cannot open shared object file: No such file or directory - /gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2/mysql2.so (LoadError)
/gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2/mysql2.so
/gems/ruby/1.8/gems/mysql2-0.3.13/lib/mysql2.rb:8
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:68:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:68:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:55:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:55:in `require'
/usr/lib/ruby/vendor_ruby/bundler.rb:120:in `require'
/config/application.rb:7
/config/environment.rb:2:in `require'
/config/environment.rb:2
config.ru:3:in `require'
config.ru:3
我已经尝试更新 mysql2 gem,卸载并重新安装完成的 bundle install
,这是成功的。我试过 wget -O
并添加了文件。但错误仍然存在。
我曾尝试寻找答案,但运气不佳。
这适用于生产环境。任何反馈将不胜感激。
最佳答案
您的问题与 gem 无关。 libmysqlclient_r
提示找不到 mysql2.so
,因为它在您的机器上丢失了。您需要处理它而不是使用 bundler
,而是通过您的系统包管理器(即对于 Debian,您可以使用 apt-get
或 aptitude
).
首先,找到你的libmysqlclient_r.so的绝对路径:
dpkg -S libmysqlclient_r.so.16
现在你已经有了绝对路径,所以运行:
ldd ABSOLUTE_PATH_TO_YOUR_LIB/libmysqlclient_r.so
ldd
列出给定库的依赖项。至少会丢失一个文件。现在您所要做的就是安装缺少的包。
关于ruby-on-rails - libmysqlclient_r.so.16 : cannot open shared object file: No such file or directory DREAMHOST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26582396/