2012-10-30 116 views
4

我運行軌道版本3.2.8和Ruby 1.9.3版,P286在Linux上Ruby on Rails的libyaml

[email protected] [~/rails_apps/myapp]# rails -v 
Rails 3.2.8 
[email protected] [~/rails_apps/myapp]# ruby -v 
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] 
[email protected] [~/rails_apps/myapp]# 

我可以生成一個遷移,但我不能運行它。我不斷收到以下錯誤消息

[email protected] [~/rails_apps/myapp]# rake db:migrate 
/home3/user1/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>': 
It seems your ruby installation is missing psych (for YAML output). 
To eliminate this warning, please install libyaml and reinstall your ruby. 
/home3/user1/ruby/gems/gems/json-1.7.5/lib/json/common.rb:67: [BUG] unknown type 0x22 (0xc given) 
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] 
<snip> 

然後

[NOTE] 
You may have encountered a bug in the Ruby interpreter or extension libraries. 
Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

Aborted 
[email protected] [~/rails_apps/myapp]# 

我安裝libyaml

rvm pkg install libyaml 

大量的調試信息然後重新安裝紅寶石

rvm reinstall ruby-1.9.3-p286 

但這沒有幫助。

任何其他想法爲什麼我不斷收到此錯誤消息?

謝謝。

回答

2

您需要將libtool安裝在您的系統上,否則libyaml將不會編譯。對於Ubuntu的嘗試:

sudo apt-get install libtool
rvm pkg install libyaml
rvm pkg install libyaml-dev
rvm reinstall 1.9.3

你也可以簡單地使用你的發行版的軟件包管理器,而不是安裝RVM的庫。對於Ubuntu的:

sudo apt-get install libyaml libyaml-dev

+0

感謝svilenv爲您的迴應。我嘗試安裝libtool,它給了我另一個錯誤 [email protected] [〜]#yum instll libtool CRITICAL:yum.cli:配置錯誤:訪問配置文件的文件時出錯:///etc/yum.conf [email protected] [〜]# – rh4games

0

你有兩個不同的問題在這裏,隨後從JSON寶石錯誤由YAML產生警告。

的警告是:

/home3/user1/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>': 
It seems your ruby installation is missing psych (for YAML output). 
To eliminate this warning, please install libyaml and reinstall your ruby. 

這不一定是一個問題,你的Ruby安裝將回落到使用舊SYCK YAML庫。 Syck已經從Ruby 2中移除了,所以你最終需要解決它,但這不是目前的主要問題。

後,立即在YAML警告你得到這樣的:

/home3/user1/ruby/gems/gems/json-1.7.5/lib/json/common.rb:67: [BUG] unknown type 0x22 (0xc given) 
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] 

這是從JSON寶石來一個錯誤。 JSON gem使用本機擴展,我認爲這個錯誤來自於在更高版本中使用與早期版本的Ruby一起安裝的gem。嘗試重新安裝寶石(特別是json)來解決這個問題。

+0

謝謝亞光。我很感激,如果你能指導我多一點如何重新安裝寶石和JSON?我不是這個舞臺上的初學者。謝謝 – rh4games

+0

我試圖重新安裝寶石,但它給了我一個類似的錯誤信息[email protected] [〜]#gem update --system /home3/user1/.rvm/rubies/ruby-1.9.3-p286/lib /ruby/1.9.1/yaml。rb:56:在''中: 看來你的ruby安裝缺少心理(對於YAML輸出)。 要消除此警告,請安裝libyaml並重新安裝紅寶石。 當前安裝的最新版本。中止。 [email protected] [〜]# – rh4games

+0

我也按照這裏的說明安裝了libyaml http://pyyaml.org/wiki/LibYAML,但仍然沒有運氣 – rh4games