mysql - 奇怪的消息 sh :line 1 trace xcode-select when running a ruby program

标签 mysql ruby-on-rails ruby macos sequel

所以我在安装“mysql”和“sequel”以使用 Ruby 连接到我的 Mac 上的本地主机时遇到了问题。我通过更改 mac 上的环境变量解决了该问题,但这是原始错误。

> sudo gem install mysql -- --with-mysql-config=/path/to/mysql_config
> sudo gem install sequel
> ruby db-connect.rb
> /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require': LoadError: dlopen(/Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/mysql-2.9.1/mysql/mysql_api.bundle, 9): Library not loaded: libmysqlclient.18.dylib (Sequel::AdapterNotFound)
Referenced from: /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/mysql-2.9.1/mysql/mysql_api.bundle
Reason: image not found - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/mysql-2.9.1/mysql/mysql_api.bundle
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'

所以我开始四处窥探,发现了一些代码可以放入我的 ~/.profile 文件中

export DYLD_LIBRARY_PATH=/Applications/XAMPP/xamppfiles/lib:$DYLD_LIBRARY_PATH

还有田田!有用。但是,如果我在 bash 配置文件中取消注释此行的情况下启动终端,则每次运行 ruby​​ 程序时它都会输出此行:

> irb
sh: line 1: 16604 Trace/BPT trap: 5       xcode-select --print-path > /dev/null 2>&1
irb(main):001:0>

我能够连接到数据库并获取信息,但我不喜欢该消息。如果我注释掉文件中的导出行并打开新终端,该消息就会消失,但随后我无法再连接到 mysql 并为 libmysqlclient.18.dylib 获取相同的 AdapterNotFound

是什么原因导致此消息?我怎样才能摆脱它或抑制它?也许有更好的方法来做到这一点?

MacOSX Yosemite、最新 XCode、ruby 2.0.0p481(2014-05-08 修订版 45883)[universal.x86_64-darwin14]、ruby on Rails

编辑

gem 环境

RubyGems 环境:

- RUBYGEMS VERSION: 2.4.2
- RUBY VERSION: 2.0.0 (2014-05-08 patchlevel 481) [universal.x86_64-darwin14]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /Users/paulcarlton/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-14
- GEM PATHS:
 - /Library/Ruby/Gems/2.0.0
 - /Users/paulcarlton/.gem/ruby/2.0.0
 - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
 - :update_sources => true
 - :verbose => true
 - :backtrace => false
 - :bulk_threshold => 1000
- REMOTE SOURCES:
 - https://rubygems.org/
- SHELL PATH:
 - /opt/local/bin
 - /opt/local/sbin
 - /usr/local/share/npm/bin
 - /opt/local/php5/bin
 - /opt/local/bin
 - /opt/local/sbin
 - /usr/local/bin
 - /usr/bin
 - /bin
 - /usr/sbin
 - /sbin
 - /usr/local/git/bin
 - /usr/local/MacGPG2/bin
 - /usr/texbin
 - /Applications/XAMPP/xamppfiles/htdocs/Development/adt-bundle-mac-x86_64-20140702/sdk/tools

哪种 ruby :

/usr/bin/ruby

最佳答案

  1. 除非您完全确定自己在做什么,否则请停止修改 Apple 提供的 Ruby。它被放在那里供苹果公司使用。我们可以利用这一点,但不要改变它,这会使用 sudo gem... 发生。
  2. 使用 rbenvRVM为您安装和管理单独的Ruby。如果您使用 RVM,请阅读其安装页面,以便了解它将做什么;它很强大,但随着强大,复杂性也随之增加。如果您不需要该功能,请从 rbenv 开始,如果您发现它不具备此功能,请切换它。我都使用它们,但在不同的机器上,因为它们不兼容。
  3. 如果使用 rbenv 或 RVM,并且使用由任一应用管理的 Rubies 或 gem,则根本不要使用 sudosudo 暂时将您的权限提升到 root,这不会知道您本地的 Ruby 安装,并且会再次通过 Apple 的 Ruby 安装。
<小时/>

我将这个 bash 脚本保留在我的计算机上,以便更轻松地安装 MySQL gem:

#!/bin/sh -x

MYSQL_PATH=/usr/local/mysql/bin
LOCAL_MYSQL_LIB=/usr/local/lib/libmysqlclient.18.dylib
MYSQL_LIB=/usr/lib/`basename $LOCAL_MYSQL_LIB`

[ -f $LOCAL_MYSQL_LIB ] || echo "Can't find $LOCAL_MYSQL_LIB" && exit
[ -f $MYSQL_LIB ]       || echo "Linking $MYSQL_LIB to $LOCAL_MYSQL_LIB" && sudo ln -s $LOCAL_MYSQL_LIB $MYSQL_LIB

PATH=$PATH:$MYSQL_PATH
env ARCHFLAGS="-arch x86_64" gem install mysql2 -- --with-mysql-config=$MYSQL_PATH/mysql_config

您可以对其进行修改以供自己使用。

关于mysql - 奇怪的消息 sh :line 1 trace xcode-select when running a ruby program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584014/

相关文章:

ruby-on-rails - Rails 应用程序默认为 sqlite3。我想默认使用 postgresql _ 如何更改

升级MyBB时Mysql问题

ruby-on-rails - X-Frame-Options ALLOW-FROM 特定站点允许所有

php - 如何在第三个表中使用两个表的返回字段连接?

ruby-on-rails - 如何在 sidekiq 中设置作业超时

javascript - 我如何使用 Nokogiri 解析 AngularJS 页面?

jquery - 在 javascript 中嵌入 ruby

html - 我可以申请远程 : true to an html href link?

mysql - 为什么 START TRANSACTION 不会像它应该的那样隐式影响自动提交

mysql - mysql 中 ON DUPLICATE KEY UPDATE 查询中的问题