奇怪的消息 sh:line 1 在运行 Ruby 程序时跟踪 xcode-select



所以我在安装"mysql"和"续集"时遇到了问题,以便使用 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 并获得相同的 AdapterNotFound for libmysqlclient.18.dylib

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

MacOSX 优胜美地, 最新 XCode, 红宝石 2.0.0p481 (2014-05-08 修订版 45883( [universal.x86_64-达尔文14], 轨道上的红宝石

编辑

宝石环境

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

哪种红宝石:

/usr/bin/ruby
  1. 停止修改Apple提供的Ruby,除非您绝对确定自己在做什么。它被放在那里供苹果使用。我们可以捎带它,但不要改变它,这会使用 sudo gem... .
  2. 使用 rbenv 或 RVM 为您安装和管理单独的红宝石。如果您使用 RVM,请阅读其安装页面,以便了解它将做什么;它功能强大,随着力量的到来,复杂性也随之而来。如果您不需要这种电源,请从 rbenv 开始,如果您发现它没有功能,请切换。我同时使用它们,但在单独的机器上使用,因为它们不兼容。
  3. 如果使用 rbenv 或 RVM,则在使用由任一应用程序管理的红宝石或宝石时,根本不要使用sudosudo暂时将您的权限提升到 root 的权限,它不会知道您的本地 Ruby 安装,并将再次通过 Apple 的 Ruby 进行安装。

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

#!/bin/sh -xMYSQL_PATH=/usr/local/mysql/binLOCAL_MYSQL_LIB=/usr/local/lib/libmysqlclient.18.dylibMYSQL_LIB=/usr/lib/'basename $LOCAL_MYSQL_LIB'[ -f $LOCAL_MYSQL_LIB ] ||echo "找不到 $LOCAL_MYSQL_LIB" && exit[ -f $MYSQL_LIB ] ||echo "Links $MYSQL_LIB to $LOCAL_MYSQL_LIB" && sudo ln -s $LOCAL_MYSQL_LIB $MYSQL_LIB路径=$PATH:$MYSQL_路径env ARCHFLAGS="-arch x86_64" gem install mysql2 -- --with-mysql-config=$MYSQL_PATH/mysql_config

您可以修改它以供自己使用。

最新更新