2009-08-09 62 views
3

Ruby on Rails網站建議在Linux下從源代碼安裝Ruby。 我遇到了一些C庫問題,從乾淨的Ubuntu 9安裝源代碼構建紅寶石。有人嘗試從Ubuntu上安裝ruby&rubygems(最好是unbuntu 9)嗎?

我在網上找到關於在Ubuntu上安裝ruby的所有說明,都涉及到使用預先打包的(基於.deb的)ruby 。顯然,這不是鐵路人員推薦的。

當我做了一個乾淨的Ruby源代碼構建時,我發現Rubygems無法安裝,因爲zlib擴展沒有工作。發生

兩個問題:

1)zlib的擴展未建。

解決方案:

ⅰ)確保ZLIB是在紅寶石源的分機目錄中的安裝文件未註釋,和

ii)確保這些ZLIB ubuntu的軟件包安裝:

aptitude install zlib1g 
aptitude install zlib1g-dbg 
aptitude install zlib1g-dev 
aptitude install zlibc 

2)修復上面的問題1(並進行乾淨的ruby重建)之後,zlib仍然無法工作,因爲擴展無法加載。

你可以看到,模塊出現故障運行這一點,並得到輸出「假」來加載:

puts require 'zlib' 

我看到這種情況發生的任何數量的分機目錄中的其他C擴展的,所以纔出現成爲這些擴展的更普遍的問題,而不僅僅是特定於zlib的東西。

總結:

  • 我的紅寶石打造找到特定的Ruby-C zlib的擴展,但它無法加載zlib的模塊。
  • 此行爲似乎發生在/ extn中的其他擴展。

有沒有一種方法,我可以找出爲什麼一個模塊無法加載?某種跟蹤/詳細模式?

+0

可能的重複[爲什麼yaml在生產中不可用?](http://stackoverflow.com/questions/1793693/why-would-yaml-be-unavailable-in-production) – 2011-08-21 23:14:31

+0

其實,其他問題是重複的,這是原創。沒關係。無論如何,由於這是一個常見的誤解,我已經要求RDF'require'來解釋'false'的含義:http://redmine.ruby-lang.org/issues/5210 – 2011-08-21 23:41:46

回答

2

我沒有看到你的問題是什麼。你說require 'zlib'返回false。但這意味着它工作!如果出現錯誤,您將得到一個異常。

+0

迂腐的語法建議:用「它確實工作「,」它已經工作「? – 2011-08-21 23:39:21

1

您是否安裝libzlib-ruby?這是我在安裝Rubygems之前的典型Ubuntu初始化:

$ apt-get update 
$ apt-get dist-upgrade 
$ apt-get install build-essential -y 
$ apt-get install rsync -y 
$ apt-get install ruby ri rdoc irb ri1.8 ruby1.8-dev libzlib-ruby zlib1g libopenssl-ruby -y 
5

下面是我在Ubuntu 11上安裝ruby,gems和rails的過程。04

  • 安裝來源紅寶石

  • 來源

    安裝RubyGems的
  • 安裝的zlib:
    • 命令和apt-get安裝的zlib1g-dev的
    • CD的,紅寶石源/ ext/zlib
    • ruby​​ extconf.rb
    • mak Ë
    • 須藤使安裝
  • 安裝的readline:
    • sudo易於得到的libreadline5安裝-dev的
    • CD的,紅寶石源/ EXT/readline的
    • 紅寶石extconf.rb
    • make
    • sudo make install
  • 安裝OpenSSL:已
    • 命令和apt-get安裝的libssl-dev的
    • CD的,紅寶石源/ EXT/OpenSSL的
    • 紅寶石extconf.rb
    • 使
    • 須藤使安裝