2011-02-07 94 views
47
[[email protected] myApplication]$ rails console 
/usr/local/lib/ruby/1.9.1/irb/completion.rb:9:in `require': no such file to load -- readline (LoadError) 
    from /usr/local/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:3:in `require' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:3:in `<top (required)>' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:20:in `require' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:20:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

我在ruby 1.9.2p136上安裝了rails 3,這沒關係。但我無法啓動rails console,它給了我複製的錯誤。這些應用程序與紅寶石1.8.7很好,我從來沒有看到這樣的錯誤。Ruby 1.9.2和Rails 3無法打開導軌控制檯

任何想法它可能是什麼?

+1

你是如何安裝1.9.2的?您需要先安裝readline,然後使用readline支持編譯ruby。另外,從堆棧跟蹤看起來它正在使用1.9.1 ... – idlefingers 2011-02-07 15:05:13

+0

當您爲1.9.2鍵入irb時會發生什麼?你可以要求'readline'嗎? – fifigyuri 2011-02-07 15:08:08

+0

@idlefingers我從源碼安裝了1.9.2,如果我要求ruby -v它會顯示「ruby 1.9.2p136(2010-12-25 revision 30365)[i686-linux]」。我不知道readline,但除了irb一切正常工作 – gkaykck 2011-02-07 15:15:04

回答

50

顯然Ubuntu和紅寶石並不總是捉依賴關係應該像他們。

first google hit(是的,我檢查出的第一個結果之前點擊到位#2棧溢出。)

導航到Ruby源代碼,然後輸入:

sudo apt-get install libreadline5-dev 
cd ext/readline 
ruby extconf.rb 
make 
sudo make install 

所以,如果您在另一個發行版中,請確保以某種方式安裝readline(source/package),然後在源extconf上運行make/install。我嘗試了什麼gkaykck建議當然,但沒有readline已經在我的系統上得到這個。

$ ruby extconf.rb 
checking for tgetnum() in -lncurses... no 
checking for tgetnum() in -ltermcap... no 
checking for tgetnum() in -lcurses... no 
checking for readline/readline.h... no 
checking for editline/readline.h... no 
5

我建議使用rvm (Ruby Version Manager)來管理您的不同版本的Ruby並在它們之間切換。它爲你編譯各種版本也做得相當不錯。您甚至可以創建每個目錄的.rvmrc文件,以告訴rvm在哪個目錄中使用哪個版本的ruby(以及如果需要,可以使用per-project gem sets!)

1

解決方法是轉到源文件夾編譯紅寶石=> EXT => readline的

ruby extconf.rb 
make 
sudo make install 
29

食譜對於那些誰使用RVM:

rvm pkg install readline 
rvm remove 1.9.3 
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr 

在有關它的更多細節https://rvm.io/packages/readline/

5

首先卸載的你擁有的每紅寶石版本。

之後顯示RVM要求:

rvm requirements 

你會得到這樣的:

Requirements for Linux (DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=11.10 
DISTRIB_CODENAME=oneiric 
DISTRIB_DESCRIPTION="Ubuntu 11.10") 

NOTE: 'ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X) 
This is the *original*/standard Ruby Language Interpreter 
     'ree' represents Ruby Enterprise Edition 
     'rbx' represents Rubinius 

bash >= 4.1 required curl is required git is required (>= 1.7 for 
ruby-head) patch is required (for 1.8 rubies and some ruby-head's). 

To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head), then you 
must install and use rvm 1.8.7 first. 

Additional Dependencies: 
# For Ruby/Ruby HEAD (MRI, Rubinius, & REE), install the following: 
    ruby: /usr/bin/apt-get install build-essential openssl libreadline6 
    libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev 
    libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev 
    ncurses-dev automake libtool bison subversion 

# For JRuby, install the following: 
    jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless 
    jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk 

# For IronRuby, install the following: 
    ironruby: /usr/bin/apt-get install curl mono-2.0-devel 

安裝通過apt-get的依賴關係。
之後安裝紅寶石1.8.7。

rvm pkg install readline 
rvm remove 1.9.3 
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr 

請注意,你甚至需要安裝通過RVM readline的包,如果你已經使用apt安裝它:如果你打算使用Ruby 1.9.x的
現在你可以安裝Ruby 1.9.3這個版本是必需的-得到。

11

如果想要另一個解決這個問題做到這一點。

sudo apt-get install libreadline6 

然後在你的寶石文件中加入:

gem 'rb-readline' 

然後

bundle install 

而且你應該所有設置。

0

使用rvm remove刪除所有安裝的ruby。 做一個「哪個紅寶石」,如果你仍然得到一些東西,你需要重新安裝rvm,然後使用rvm安裝ruby。

3

在CentOS 6:

記住我們是從紅寶石工作安裝目錄,對我來說是:

/opt/ruby-1.9.3-p194/ext/readline 

如果你看到下面的輸出,那麼readline未安裝:

$ ruby extconf.rb 
checking for tgetnum() in -lncurses... no 
checking for tgetnum() in -ltermcap... no 
checking for tgetnum() in -lcurses... no 
checking for readline/readline.h... no 
checking for editline/readline.h... no 

要使用RPM安裝:

yum install readline-devel 

然後構建它:

ruby extconf.rb 
make 
sudo make install 
1

添加在Gemfile中

gem 'rb-readline' 

然後bundle install

的伎倆我

相關問題