2010-03-11 59 views
5

更新II问题已解决,但为什么?这是有史以来最令人头疼的事情。我的问题已解决,但我不知道如何完成此任务。另外下面的结果是没有意义的。我的.profile路径(/ usr/local/bin)不同于当前工作的路径(/ usr/bin /)。在OSX雪豹关闭终端后,工作路径突然出现。这里发生了什么?列车残骸。 Rails需要RubyGems> = 1.3.2

这里的工作路径和混乱的.profile文件:

$ rails -v 
Rails 3.0.0.beta 
$ ruby -v 
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0] 
$ gem -v 
1.3.6 
$ whereis ruby 
/usr/bin/ruby 
$ whereis rails 
/usr/bin/rails 
$ whereis gem 
/usr/bin/gem 
$ which gem 
/usr/bin/gem 
$ which ruby 
/usr/bin/ruby 
$ which rails 
/usr/bin/rails 
$ mate ~/.profile 

.profile文件:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 
if [[ -s /Users/justinz/.rvm/scripts/rvm ]] ; then source /Users/justinz/.rvm/scripts/rvm ; fi 

更新我注意到,其中红宝石和红宝石whereis是不同的位置

which ruby 
/opt/local/bin/ruby 
whereis ruby 
/usr/bin/ruby 

我最近升级了ruby到ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10],我想我打破了轨道。当我尝试加载轨道。我收到一条奇怪的消息。请帮忙!

$ ruby​​脚本/服务器 Rails需要RubyGems> = 1.3.2。请安装RubyGems的,然后再试一次:http://rubygems.rubyforge.org

$ which ruby 
/usr/local/bin/ruby 
$ whereis ruby 
/usr/bin/ruby 
$ which rails 
/usr/local/bin/rails 
$ whereis rails 
/usr/bin/rails 
$ which gem 
/usr/local/bin/gem 
$ whereis gem 
/usr/bin/gem 
$ ruby -v 
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0] 
$ rails -v 
Rails 2.3.5 
$ gem list 

*** LOCAL GEMS *** 

actionmailer (2.3.5) 
actionpack (2.3.5) 
activerecord (2.3.5) 
activeresource (2.3.5) 
activesupport (2.3.5) 
builder (2.1.2) 
bundler (0.9.11) 
columnize (0.3.1) 
erubis (2.6.5) 
fastercsv (1.5.1) 
ffi (0.6.3) 
gbarcode (0.98.16) 
i18n (0.3.5) 
linecache (0.43) 
mail (2.1.3) 
memcache-client (1.8.0) 
prawn (0.8.4) 
prawn-core (0.8.4) 
prawn-layout (0.8.4) 
prawn-security (0.8.4) 
rack (1.1.0, 1.0.1) 
rack-mount (0.6.1) 
rack-test (0.5.3) 
rails (2.3.5) 
rake (0.8.7) 
ruby-debug (0.10.3) 
ruby-debug-base (0.10.3) 
rubygems-update (1.3.6) 
sqlite3 (0.0.8) 
text-format (1.0.0) 
thor (0.13.4) 
tzinfo (0.3.17) 
$ sudo gem install sqlite3-ruby 
Password: 
Building native extensions. This could take a while... 
ERROR: Error installing sqlite3-ruby: 
    ERROR: Failed to build gem native extension. 

/usr/local/bin/ruby extconf.rb 
checking for fdatasync() in -lrt... no 
checking for sqlite3.h... yes 
checking for sqlite3_open() in -lsqlite3... no 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/usr/local/bin/ruby 
    --with-sqlite3-dir 
    --without-sqlite3-dir 
    --with-sqlite3-include 
    --without-sqlite3-include=${sqlite3-dir}/include 
    --with-sqlite3-lib 
    --without-sqlite3-lib=${sqlite3-dir}/lib 
    --with-rtlib 
    --without-rtlib 
    --with-sqlite3lib 
    --without-sqlite3lib 


Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5 for inspection. 
Results logged to /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/ext/sqlite3_api/gem_make.out 
+0

我应该添加我试过sudo gem update --system – 2010-03-11 02:50:06

+0

你目前正在运行的是什么版本的ruby gems(gem -v) – 2010-03-11 02:58:48

+0

我正在运行1.3.6 – 2010-03-11 03:16:05

回答

2

你看过Ruby版本管理器或rvm(http://rvm.beginrescueend.com/)。我知道它运行在Linux和Mac OS X上。

基本上它是一个管理不同版本的ruby及其相关“碎片”的工具。当朋友推荐我尝试时,我遇到了类似的问题,并且为我解决了这个问题。

0

我不能完全肯定我没有记错,因为这是前一段时间,但我想我也有类似的问题,当我从Rails的2.3.4升级到Rails的2.3.5。在这种情况下,我认为这个问题是由于安装了Rack 1.1.0和Rack 1.0.1(在Rails升级期间安装了Rack 1.1.0)造成的。我摆脱了1.1.0,事情又开始了。

当我从Ruby 1.8.6升级到Ruby 1.8.7(在Windows上)时,我没有遇到任何问题。

我可能是错的,但也许这至少会给你一个新的尝试方向。

+0

不幸的是,这个简单的修复程序不适用于我的系统。 – 2010-03-15 01:26:01

1

我刚刚解决了这个问题。我不知道它是最有效的,但我重建一切从零开始上hivelogic越详细,安装Ruby和Ruby宝石“在/ usr /本地”

记住要改变我的路径:

export PATH=/usr/local/bin:$PATH 
+0

你能解释一下出口路线吗?如何改变它?我遵循了所有关于雪豹安装的步骤,最初它的工作,然后重新启动我有同样的问题。 – 2010-03-15 01:25:25

+0

当你输入命令来获得如何处理这些命令的指令时,路径基本上是shell /终端程序的外观。当您从教程中重建ruby时,它将所有内容都安装在/ usr/local中,这样您就可以将它加入到它检查的目录列表中,因此它首先在那里查找。 – ethyreal 2010-03-15 07:19:38

+0

如果您在终端中输入export命令,它仅存在于该会话中,这就是为什么您将该行添加到主目录中.profile或.bash_login文件的末尾,因此每次启动终端时都会加载命令,但我想你也可以在每次启动shell时手动输入export命令。 – ethyreal 2010-03-15 07:22:24

-3

您需要在两个不同的目录之间创建符号链接。

须藤LN -s /选择/ local/bin目录/红宝石在/ usr/bin中/红宝石

+0

坏主意。看起来他在Mac上,这样做会破坏系统安装的Ruby,这可能会导致其他地方出现问题。 – mipadi 2010-03-15 16:37:42

+0

我该怎么做才能撤消这个命令?我昨天执行了它:( – 2010-03-16 02:40:29

+0

@JZ撤消命令sudo rm -rf/usr/bin/ruby​​ @mipadi 我明白他是在mac上我在我的mac机器上执行过同样的命令它运行良好。我没有看到它甚至会导致问题,当它只是创建一个链接到目录时,它实际上并没有移动任何文件或文件夹。那么问题从哪里来?他一定使用了我告诉他反正使用的命令,因为它看起来问题已经解决了。你完全不知道你在说什么。 – mike 2010-05-11 00:13:25

1

如果你在Mac上(这我是从 '达尔文' 出现在猜测运行这个你痕迹),如果您有时键入gem whatever而不是sudo gem whatever,则有时可能会出现类似问题。检查你的〜/ .gem或〜/ .gems目录,看看有没有意外的宝石安装在那里。

如果是,请删除/重新安装它们。

0

我其实刚刚遇到这个问题。矿是由升级红宝石造成的。我从一个运行Ruby 1.8.6的旧版EC2 AMI开始,我希望运行在一个更新的1.8.7上。我下载并编译了最新的1.8.7 Ruby,删除了我的1.8.6的链接(这是一个Debian服务器,因此/ usr/bin/ruby​​是/usr/bin/ruby1.8的符号链接,注意这一点),并从/ usr/local/bin/ruby​​运行新的Ruby。没关系。但后来我开始陷入奇怪的行为,包括前面提到的“Rails需要RubyGems> = 1.3.2”的错误。这里是我最终需要检查和做的事情,这可能会为别人而改变,但希望这将是有益的:

  • 我删除了RubyGems并重新安装它:“apt-get的删除了RubyGems”随后通过下载从rubyforge和安装。这可能不是完全需要的,但我想确保事情很干净。请记住,这些宝石与您的ruby版本相关联,因此升级后您可能需要重新安装所有宝石。我不确定是否有解决方法,但是如果知道的话,我会很感兴趣。

  • 就我而言,我被骗了。因为我是从1.8.6 - > 1.8.7,所以我决定尝试将旧的Ruby位置的宝石复制到新位置:“cp -R /usr/lib/ruby/gems/1.8/usr/local/” LIB /红宝石/宝石”。它对我有效,但我仍在测试,可以想象出这样做会遇到问题,所以要小心。当然,这比重新安装一切更方便。

  • 我使用nginx运行乘客。在Passenger配置中,它将具有指向Ruby二进制文件和Passenger gem的条目。一定要改变这些!我花了几分钟时间想知道我的应用程序是否仍然正常启动,即使这些宝石已经不存在了......这是因为nginx的配置仍然直接指向/usr/bin/ruby1.8 - oops。

希望此信息有助于某人。