Library not loaded:libmysqlclient.16.dylib在使用mysql2 gem在OS X 10.6上运行'rails server'时出错
我一直在为此奋斗一段时间。
我在Snow Leopard机器上安装了Rails 3,gem,mysql。 一切进展顺利,直到我创建了我的第一个项目,并试图运行
rails server
运行这个我得到:
jontybrook$ rails server /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError) Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7 from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require' from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7 from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require' from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28 from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap' from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27 from script/rails:6:in `require' from script/rails:6 jontybrook$
据我所知,问题是用mysql2的宝石。 MySQL似乎运行良好,我的Gemfile引用mysql2,我的database.yml文件似乎也没关系。
错误提到
Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
但是
jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2 jontybrook$ ls client.rb em.rb error.rb mysql2.bundle result.rb
MySQL2.bundle在那里!?
如果我使用旧的MySQL的宝石,WEBrick靴子罚款。 但是这不是很理想,是吗?
我已经试过谷歌可以给我的一切! 任何帮助非常感谢。
我从来没有能够得到任何这些答案为我工作,但这是我用来使它为我工作的命令。 这样你每次更新你的mysql都不需要使用install_name_tool
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
我已经解决了这个,最终!
我在RVM下重新安装了Ruby和Rails。 我正在使用Ruby版本1.9.2-p136。
在rvm下重新安装之后,这个错误仍然存在。
最终解决这个问题的魔法命令是:
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
希望这可以帮助别人!
这个修复对我来说工作得非常好:
将以下内容添加到〜/ .profile中
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/
对我来说,这只是因为我已经升级了mysql,但没有更新mysql2宝石 – 宝石的重新安装将修复它…
gem pristine mysql2
我有同样的问题。 它看起来像无法找到libmysqlclient库。 为我工作的临时解决方案如下:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
我不知道配置在哪里指定加载路径或它设置为,但我的MySQL安装似乎没有在其中。 如果我找到更持久的解决方案,我会再次发布。
编辑:其实这个修复似乎更准确地解决这个问题。
将下面的代码添加到~/.bash_profile
:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
这对我有效
在OSX El Capitan更新中,当你这样做时:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
它会抛出一个错误
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
所以为了避免这种情况,你可以先用命令找到libmysqlclient.18.dylib
User$ locate libmysqlclient.18.dylib
在我的情况下,它返回/usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib
因此,而不是usr/lib/
我们将创建符号链接到usr/local/lib/
像这样:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
更多细节: https : //forums.developer.apple.com/thread/7935
以下线为我工作。 我使用的是Mac 10.7.2。
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
刚碰到这个问题。 我所要做的就是卸载mysql2 gem并重新安装它。 希望这适用于其他人
这是如何为我工作的:
我运行了下面的命令
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib〜/ .rvm / gems / ruby-1.9.2-p180 / gems / mysql2-0.2.7 / lib / mysql2 / mysql2.bundle
我的环境:
$ rails -v Rails 3.0.6
$ mysql –version
mysql Ver 14.14 Distrib 5.5.11,使用readline 5.1的osx10.6(i386)
$ ruby -v
红宝石1.9.2p180(2011-02-18修订版30909)[x86_64-darwin10.7.0]
希望这有助于某人。
谢谢,Ogapo! 导出别名为我工作,然后我跟着链接,在我的情况下,mysql2.bundle是在/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle我调整了install_name_tool来修改该包,而不是〜/ .rvm中的一个,并且按照应该完成的方式来工作。
所以现在:
$ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7) /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
嗨它从弗雷迪·安徒生推荐链接工作
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
只是不得不改变我的版本的MySQL,在命令,谢谢
我通过删除当前项目的gemset并重新创建并重新运行软件包安装来解决此问题。 我想我是通过安装更新版本的mysql来实现的。
我在使用Django时遇到了这个问题,我使用brew
来安装很多开源程序,而且由于我使用了brew
来安装mysql
,因此我需要执行以下操作:
sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
一定要替换您的版本的库!
bundle install mysql --force
帮助了我。 它重新安装了由于brew uninstall mysql
而导致的依赖项。
强尼,我也在为此苦苦挣扎。
我想这里有一个线索:
otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7) libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)
注意到dylib的路径是,呃,相当短?
我试图找出gem安装说明从dylib路径离开的地方,但是由于我自己从未构建过gem,所以速度很慢。
如果我发现更多,我会发布更多!
几天前我也遇到了这个问题。 我最终设法解决了这个问题。 我不太确定,但是我会告诉你我做了什么。 也许它会帮助你。
我开始下载RVM。 如果你还没有使用它,我强烈建议你这样做。 它基本上创建了一个新的单独安装的Ruby,RoR和RubyGems的沙箱。 事实上,您可以同时进行多个安装,并立即切换到另一个。 它像一个魅力。
为什么这是有用的? 因为你不应该在OS X中混淆默认的Ruby安装。系统依赖于它。 最好只保留默认的Ruby和RoR安装,并使用RVM创建一个新的,可以用于自己的开发。
一旦我创建了我的单独的Ruby安装,我刚刚安装了RoR,RubyGems和mysql,并且工作。 对于我采取的确切步骤,看到我的问题: 安装Rails,MySQL等,一切都出错了
再次:我不知道这将解决您的问题。 但它确实为我做了诡计,在任何情况下使用RVM都是非常值得推荐的。
我仍然发现,使用上面的解决方案,它不适用于(例如)TextMate的Rails插件。 我有一个类似的错误(当检索数据库模式时)。
那么开放的终端是什么呢?
cd /usr/local/lib sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .
用你自己的路径(或mysql)替换mysql-5.5.8-osx10.6-x86_64 。
这使得一个符号链接到lib,现在轨道从命令行运行,以及TextMate插件(s)像ruby-on-rails-tmbundle 。
要清楚:这也解决了启动rails服务器时出现的错误。
我已经通过在我的项目文件夹中创建.rvmrc文件来解决它,包括:
rvm use <yourrubie>
然后进入我的项目路径
cd ~/myprojectpath
然后我跑
bundle install
我的版本luvlss的命令:
Mac OSX 10.10.5
MySQL 5.6.27
乘客5.0.21
sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
如果你尝试了很多不同的链接,就像我一样,做一些清理:
sudo unlink /usr/lib/libmysqlclient.18.dylib
这通常发生在你升级mysql时。 安装在旧的mysql库上的mysql2 gem无法使用新的库。 只需要重新安装它。
用gem uninstall mysql2
。 然后用gem install mysql2
安装它
如果您使用OSX并使用brew安装mysql,则可以:
brew link mysql
如果您遇到版本问题(我的MySQL 5.7运行,而我的宝石需要5.6.25),你可以
brew unlink mysql brew switch mysql 5.6.25
打开一个终端并运行以下命令:
export PATH=$PATH:/usr/local/mysql/bin
它应该工作。