2010-03-11 34 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。

希望此信息有助於某人。