web-dev-qa-db-ja.com

Ubuntu11.10でRVMを使用してIRBでReadlineサポートを取得する方法

私はこれを機能させるために考えられるすべてのことを試みましたが、役に立たなかったので、ここでデバッグ方法の提案を求めています。

まず、Ubuntu11.10を実行します

インストールされたrvm:

$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Apt-getを使用してインストールされたreadline:

$ Sudo apt-get install libreadline-dev

Readlineのインストールを確認します。

$ dpkg --get-selections | grep readline
lib64readline-gplv2-dev             install
lib64readline5                  install
libreadline-dev                 install
libreadline5                    install
libreadline6                    install
libreadline6-dev                install
readline-common                 install

ReadlineをサポートしてRubyをインストールしますか?

$ rvm install 1.9.2 --with-readline-dir=/usr

これがrvmバージョンです:

$ rvm --version

rvm 1.9.2 by Wayne E. Seguin ([email protected]) [https://rvm.beginrescueend.com/]

Ruby Shell:

$ irb
1.9.2 :001 > puts "add history"
add history
 => nil 
1.9.2 :002 > ^[[A^[[A^[[A^[[A^[[A <------ PRESS UP ARROW DOES THIS

いいえ、それでubuntuのreadlineバージョンで動作しない場合はOKですか? rvm独自のバージョンのreadlineを試してみましょう。

$ rvm pkg install readline
Fetching readline-5.2.tar.gz to /home/keith/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1989k  100 1989k    0     0   318k      0  0:00:06  0:00:06 --:--:--  418k
Extracting readline-5.2.tar.gz to /home/keith/.rvm/src
Applying patch '/home/keith/.rvm/patches/readline-5.2/shobj-conf.patch'...
Prepare readline in /home/keith/.rvm/src/readline-5.2.
ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log
Configuring readline in /home/keith/.rvm/src/readline-5.2.
Compiling readline in /home/keith/.rvm/src/readline-5.2.
Installing readline to /home/keith/.rvm/usr
Fetching readline-6.2.tar.gz to /home/keith/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2224k  100 2224k    0     0   310k      0  0:00:07  0:00:07 --:--:--  444k
Extracting readline-6.2.tar.gz to /home/keith/.rvm/src
Applying patch '/home/keith/.rvm/patches/readline-6.2/patch-shobj-conf.diff'...
Prepare readline in /home/keith/.rvm/src/readline-6.2.
ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log
Configuring readline in /home/keith/.rvm/src/readline-6.2.
Compiling readline in /home/keith/.rvm/src/readline-6.2.
Installing readline to /home/keith/.rvm/usr

わかりました、そこにエラーがあります、見てみましょう:

$ more /home/keith/.rvm/log/readline/autoreconf.log
[2011-11-17 22:31:15] autoreconf -is --force
autoheader: warning: missing template: CTYPE_NON_ASCII
autoheader: Use AC_DEFINE([CTYPE_NON_ASCII], [], [Description])
autoheader: warning: missing template: FIONREAD_IN_SYS_IOCTL
autoheader: warning: missing template: HAVE_BSD_SIGNALS
autoheader: warning: missing template: HAVE_GETPW_DECLS
autoheader: warning: missing template: HAVE_LANGINFO_CODESET
autoheader: warning: missing template: HAVE_MBRLEN
autoheader: warning: missing template: HAVE_MBSCMP
autoheader: warning: missing template: HAVE_MBSNRTOWCS
autoheader: warning: missing template: HAVE_MBSRTOWCS
autoheader: warning: missing template: HAVE_MBSTATE_T
autoheader: warning: missing template: HAVE_POSIX_SIGNALS
autoheader: warning: missing template: HAVE_POSIX_SIGSETJMP
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_FILENO
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_INO
autoheader: warning: missing template: HAVE_USG_SIGHOLD
autoheader: warning: missing template: HAVE_WCRTOMB
autoheader: warning: missing template: HAVE_WCSCOLL
autoheader: warning: missing template: HAVE_WCSDUP
autoheader: warning: missing template: HAVE_WCTYPE
autoheader: warning: missing template: HAVE_WCWIDTH
autoheader: warning: missing template: MUST_REINSTALL_SIGHANDLERS
autoheader: warning: missing template: NO_MULTIBYTE_SUPPORT
autoheader: warning: missing template: SPEED_T_IN_SYS_TYPES
autoheader: warning: missing template: STRCOLL_BROKEN
autoheader: warning: missing template: STRUCT_WINSIZE_IN_SYS_IOCTL
autoheader: warning: missing template: STRUCT_WINSIZE_IN_TERMIOS
autoheader: warning: missing template: TIOCSTAT_IN_SYS_IOCTL
autoheader: warning: missing template: VOID_SIGHANDLER
autoreconf: /usr/bin/autoheader failed with exit status: 1

そして予想通り、irbはreadlineで動作していません:

$ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr
Installing Ruby from source to: /home/keith/.rvm/rubies/Ruby-1.8.7-p352, this may take a while depending on your cpu(s)...

Ruby-1.8.7-p352 - #fetching 
Ruby-1.8.7-p352 - #extracting Ruby-1.8.7-p352 to /home/keith/.rvm/src/Ruby-1.8.7-p352
Ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/Ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/Ruby/1.8.7/stdout-rouge-fix.patch)
Ruby-1.8.7-p352 - #configuring 
Ruby-1.8.7-p352 - #compiling 
Ruby-1.8.7-p352 - #installing 
Removing old Rubygems files...
Installing rubygems-1.8.10 for Ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
Ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/)
Install of Ruby-1.8.7-p352 - #complete 
$ irb
Readline was unable to be required, if you need completion or history install readline then reinstall the Ruby.
You may follow 'rvm notes' for dependencies and/or read the docs page https://rvm.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your Ruby with readline support after obtaining the readline libraries.
1.8.7 :001 > 

すべてのrvm要件をインストールしましたか?はい、ここを見てください:

$ Sudo 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
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libxslt1-dev' instead of 'libxslt-dev'
Note, selecting 'libncurses5-dev' instead of 'ncurses-dev'
autoconf is already the newest version.
automake is already the newest version.
bison is already the newest version.
build-essential is already the newest version.
curl is already the newest version.
git-core is already the newest version.
libc6-dev is already the newest version.
libncurses5-dev is already the newest version.
libreadline6 is already the newest version.
libreadline6-dev is already the newest version.
libreadline6-dev set to manually installed.
libsqlite3-0 is already the newest version.
libsqlite3-dev is already the newest version.
libssl-dev is already the newest version.
libtool is already the newest version.
libxml2-dev is already the newest version.
libxslt1-dev is already the newest version.
libyaml-dev is already the newest version.
openssl is already the newest version.
sqlite3 is already the newest version.
Subversion is already the newest version.
zlib1g is already the newest version.
zlib1g-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

そして、それはどんどんとどんどんと続きます.....

$ rvm remove 1.8.7
Removing /home/keith/.rvm/src/Ruby-1.8.7-p352...
Removing /home/keith/.rvm/rubies/Ruby-1.8.7-p352...
Removing Ruby-1.8.7-p352 aliases...
Removing Ruby-1.8.7-p352 wrappers...
Removing Ruby-1.8.7-p352 environments...
Removing Ruby-1.8.7-p352 binaries...

$ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr
Installing Ruby from source to: /home/keith/.rvm/rubies/Ruby-1.8.7-p352, this may take a while depending on your cpu(s)...

Ruby-1.8.7-p352 - #fetching 
Ruby-1.8.7-p352 - #extracting Ruby-1.8.7-p352 to /home/keith/.rvm/src/Ruby-1.8.7-p352
Ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/Ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/Ruby/1.8.7/stdout-rouge-fix.patch)
Ruby-1.8.7-p352 - #configuring 
Ruby-1.8.7-p352 - #compiling 
Ruby-1.8.7-p352 - #installing 
Removing old Rubygems files...
Installing rubygems-1.8.10 for Ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
Ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/)
Install of Ruby-1.8.7-p352 - #complete 

$ irb
Readline was unable to be required, if you need completion or history install readline then reinstall the Ruby.
You may follow 'rvm notes' for dependencies and/or read the docs page https://rvm.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your Ruby with readline support after obtaining the readline libraries.
1.8.7 :001 > 

$ cd ~/.rvm/src/Ruby-1.8.7-p352/ext/readline/
$ Ruby extconf.rb 
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... yes
checking for rl_filename_completion_function()... yes
checking for rl_username_completion_function()... yes
checking for rl_completion_matches()... yes
checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_cleanup_after_signal()... yes
checking for rl_clear_signals()... yes
checking for rl_vi_editing_mode()... yes
checking for rl_emacs_editing_mode()... yes
checking for replace_history_entry()... yes
checking for remove_history()... yes
creating Makefile

$ make
gcc -shared -o readline.so readline.o -L. -L/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -Wl,-R/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -L.  -rdynamic -Wl,-export-dynamic    -Wl,-R -Wl,/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -L/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -lruby -lreadline -lncurses  -lrt -ldl -lcrypt -lm   -lc

$ make install
/usr/bin/install -c -m 0755 readline.so /home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib/Ruby/site_Ruby/1.8/i686-linux

$ rvm remove 1.8.7
Removing /home/keith/.rvm/src/Ruby-1.8.7-p352...
Removing /home/keith/.rvm/rubies/Ruby-1.8.7-p352...
Shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Removing Ruby-1.8.7-p352 aliases...
Removing Ruby-1.8.7-p352 wrappers...
Removing Ruby-1.8.7-p352 environments...
Removing Ruby-1.8.7-p352 binaries...

$ rvm install 1.8.7 --with-readline-dir=\$HOME/.rvm/usr
Installing Ruby from source to: /home/keith/.rvm/rubies/Ruby-1.8.7-p352, this may take a while depending on your cpu(s)...
Ruby-1.8.7-p352 - #fetching 
Ruby-1.8.7-p352 - #extracting Ruby-1.8.7-p352 to /home/keith/.rvm/src/Ruby-1.8.7-p352
Ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/Ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/Ruby/1.8.7/stdout-rouge-fix.patch)
Ruby-1.8.7-p352 - #configuring 
Ruby-1.8.7-p352 - #compiling 
Ruby-1.8.7-p352 - #installing 
Removing old Rubygems files...
Installing rubygems-1.8.10 for Ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
Ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/)
Install of Ruby-1.8.7-p352 - #complete 

$ irb
Readline was unable to be required, if you need completion or history install readline then reinstall the Ruby.
You may follow 'rvm notes' for dependencies and/or read the docs page https://rvm.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your Ruby with readline support after obtaining the readline libraries.
1.8.7 :001 > $ 

$ rvm pkg install readline
Fetching readline-5.2.tar.gz to /home/keith/.rvm/archives
Extracting readline-5.2.tar.gz to /home/keith/.rvm/src
Applying patch '/home/keith/.rvm/patches/readline-5.2/shobj-conf.patch'...
Prepare readline in /home/keith/.rvm/src/readline-5.2.
ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log
Configuring readline in /home/keith/.rvm/src/readline-5.2.
Compiling readline in /home/keith/.rvm/src/readline-5.2.
Installing readline to /home/keith/.rvm/usr
Fetching readline-6.2.tar.gz to /home/keith/.rvm/archives
Extracting readline-6.2.tar.gz to /home/keith/.rvm/src
Applying patch '/home/keith/.rvm/patches/readline-6.2/patch-shobj-conf.diff'...
Prepare readline in /home/keith/.rvm/src/readline-6.2.
ERROR: Error running 'autoreconf -is --force', please read /home/keith/.rvm/log/readline/autoreconf.log
Configuring readline in /home/keith/.rvm/src/readline-6.2.
Compiling readline in /home/keith/.rvm/src/readline-6.2.
Installing readline to /home/keith/.rvm/usr

$ Sudo 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
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libxslt1-dev' instead of 'libxslt-dev'
Note, selecting 'libncurses5-dev' instead of 'ncurses-dev'
autoconf is already the newest version.
automake is already the newest version.
bison is already the newest version.
build-essential is already the newest version.
curl is already the newest version.
git-core is already the newest version.
libc6-dev is already the newest version.
libncurses5-dev is already the newest version.
libreadline6 is already the newest version.
libreadline6-dev is already the newest version.
libreadline6-dev set to manually installed.
libsqlite3-0 is already the newest version.
libsqlite3-dev is already the newest version.
libssl-dev is already the newest version.
libtool is already the newest version.
libxml2-dev is already the newest version.
libxslt1-dev is already the newest version.
libyaml-dev is already the newest version.
openssl is already the newest version.
sqlite3 is already the newest version.
Subversion is already the newest version.
zlib1g is already the newest version.
zlib1g-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

$ cd ~/.rvm/src/Ruby-1.8.7-p352/ext/readline/

$ Ruby extconf.rb --with-readline-dir=/usr
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... yes
checking for rl_filename_completion_function()... yes
checking for rl_username_completion_function()... yes
checking for rl_completion_matches()... yes
checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_cleanup_after_signal()... yes
checking for rl_clear_signals()... yes
checking for rl_vi_editing_mode()... yes
checking for rl_emacs_editing_mode()... yes
checking for replace_history_entry()... yes
checking for remove_history()... yes
creating Makefile

$ make
gcc -I. -I. -I/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib/Ruby/1.8/i686-linux -I. -DHAVE_READLINE_READLINE_H -DHAVE_READLINE_HISTORY_H -DHAVE_RL_FILENAME_COMPLETION_FUNCTION -DHAVE_RL_USERNAME_COMPLETION_FUNCTION -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_DEPREP_TERM_FUNCTION -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_BASIC_Word_BREAK_CHARACTERS -DHAVE_RL_COMPLETER_Word_BREAK_CHARACTERS -DHAVE_RL_BASIC_QUOTE_CHARACTERS -DHAVE_RL_COMPLETER_QUOTE_CHARACTERS -DHAVE_RL_FILENAME_QUOTE_CHARACTERS -DHAVE_RL_ATTEMPTED_COMPLETION_OVER -DHAVE_RL_LIBRARY_VERSION -DHAVE_RL_EVENT_HOOK -DHAVE_RL_CLEANUP_AFTER_SIGNAL -DHAVE_RL_CLEAR_SIGNALS -DHAVE_RL_VI_EDITING_MODE -DHAVE_RL_EMACS_EDITING_MODE -DHAVE_REPLACE_HISTORY_ENTRY -DHAVE_REMOVE_HISTORY -I/usr/include  -D_FILE_OFFSET_BITS=64  -fPIC -g -O2  -fPIC   -c readline.c
gcc -shared -o readline.so readline.o -L. -L/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -Wl,-R/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -L/usr/lib -Wl,-R/usr/lib -L.  -rdynamic -Wl,-export-dynamic    -Wl,-R -Wl,/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -L/home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib -lruby -lreadline -lncurses  -lrt -ldl -lcrypt -lm   -lc

$ make install
/usr/bin/install -c -m 0755 readline.so /home/keith/.rvm/rubies/Ruby-1.8.7-p352/lib/Ruby/site_Ruby/1.8/i686-linux

$ irb
Ruby-1.8.7-p352 :001 > p 1
1
 => nil 
Ruby-1.8.7-p352 :002 > $   

$ rvm remove 1.8.7
Removing /home/keith/.rvm/src/Ruby-1.8.7-p352...
Removing /home/keith/.rvm/rubies/Ruby-1.8.7-p352...
Removing Ruby-1.8.7-p352 aliases...
Removing Ruby-1.8.7-p352 wrappers...
Removing Ruby-1.8.7-p352 environments...
Removing Ruby-1.8.7-p352 binaries...

$ rvm install 1.8.7 --with-readline-dir=/usr
Installing Ruby from source to: /home/keith/.rvm/rubies/Ruby-1.8.7-p352, this may take a while depending on your cpu(s)...

Ruby-1.8.7-p352 - #fetching 
Ruby-1.8.7-p352 - #extracting Ruby-1.8.7-p352 to /home/keith/.rvm/src/Ruby-1.8.7-p352
Ruby-1.8.7-p352 - #extracted to /home/keith/.rvm/src/Ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix' (located at /home/keith/.rvm/patches/Ruby/1.8.7/stdout-rouge-fix.patch)
Ruby-1.8.7-p352 - #configuring 
Ruby-1.8.7-p352 - #compiling 
Ruby-1.8.7-p352 - #installing 
Removing old Rubygems files...
Installing rubygems-1.8.10 for Ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
Ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Ruby-1.8.7-p352 - #importing default gemsets (/home/keith/.rvm/gemsets/)
Install of Ruby-1.8.7-p352 - #complete 

$ irb
1.8.7 :001 > p "hello world"
"hello world"
 => nil 
1.8.7 :002 > ^[[A^[[A^[[A^[[A^[[A

したがって、結論として、明るいsparkが、この状況をデバッグして解決する方法を提案できれば、非常にありがたいです。

ps-はい、私はこの問題を「グーグル」で死に至らしめています。

30
ktec

わかりました。これはかなり明白に思えるかもしれませんが、答えを知っているときは常にそうです。

RVMの使用をあきらめ、rbenvに切り替えました。これは非常に嬉しいことです。

Sudo apt-get install libreadline-gplv2-dev
CONFIGURE_OPTS="--with-readline-dir=/usr/include/readline --with-openssl-dir=/usr/local" rbenv-install 1.9.2-p290

これはエラーなしでインストールされました-そして、libreadline6-devがインストールされているので、gplv2パッケージが必要であるとはまだ確信していません。しかし、それでも私の問題は解決しませんでした。それは方程式からRVMを削除し、私の最善の努力にもかかわらず、IRBシェルがreadlineの使用を拒否していたことを示しました。

答えは、このすばらしいガイドを読んだことから来ました。

RubyTools.pdf

私が見つけた〜/ .irbrcファイル内:

IRB.conf[:USE_READLINE] = false

クイックアップデート:

IRB.conf[:USE_READLINE] = true

そして、私はガスで調理しています!

すべての素晴らしい答えと提案をありがとう、私はあなたの時間を感謝します。

11
ktec

ここでのUbuntu12.04:ここでの回答は役に立ちましたが、誤解を招くものでもありました。

Ubuntu 12.04を使用している場合は、-skip-autoreconfの有無にかかわらず、readlineをpkgインストールしないでください。それを行った後、rvm install 1.9.3にどのスイッチの組み合わせを指定しても、readlineまたはzlibのいずれかが壊れます。

それを機能させるには、apt-get install that rvm requirementsするように指示し、pkg uninstall readlineそして簡単なrvm remove 1.9.3; rvm install 1.9.3

33
Bryan Larsen

私はUbuntu11.10でこれと同じ問題に苦労しました。

私の場合、以下を使用すると、readlineは正しくコンパイルされるように見えます。

$ rvm --skip-autoreconf pkg install readline

http://beginrescueend.com/packages/readline/ の下部に概説されているように

ただし、irbを呼び出すと、「Readlineを要求できません」という通常のエラーが発生します。

最後に、シェーンのコマンドラインに基づいて、次のコマンドを呼び出しました。

$ rvm install 1.9.3 --with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_usr_path --with-zlib-dir=$rvm_usr_path --with-openssl-dir=$rvm_usr_path

http://beginrescueend.com/packages/readline/ で言及されているコマンドではなく

$ rvm install 1.9.2 --with-readline-dir=$rvm_path/usr

私の場合、バージョン1.9.3が必要でした。そしてfinallyirbは機能するreadlineを思いついた。

私を正しい方向に向けてくれたここにいるみんなに感謝します。

12
usonianhorizon

これにより、rvmの問題がRuby 1.9.3で解決されました。

gem install rb-readline
10
henrybai

私は同じ問題を抱えていましたが、私は11.04にいて、あなたが与えたリンクを読んで https://github.com/wayneeseguin/rvm/issues/55 そしてそこのpeplinsコメントの情報から削除しましたここに追加されたautoreconf呼び出し
https://github.com/wayneeseguin/rvm/commit/94c301d そしてreadlineはエラーなしでコンパイルされるようになりました。 Rubyを再度インストールする前に、readlineをコンパイルした後、autoreconf呼び出しに追加し直しました。

だからこれは私がそれを機能させた方法です:

〜/ .rvm/scripts/Functions/pkgを編集して、以下を削除します。

if [[ "${rvm_skip_autoreconf_flag:-0}" == 0 ]] &&
  which autoreconf >/dev/null 2>&1 &&
  which libtoolize >/dev/null 2>&1 &&
  [[ -f configure.ac || -f configure.in ]]
then
__rvm_run "$package/autoreconf" \
  "autoreconf -is --force" \
  "Prepare $package in $rvm_src_path/$package-$version."
fi

Readlineをコンパイルして削除Ruby(ree_dependenciesコマンドを使用しましたが、これが必要かどうかはわかりません):

rvm pkg install ree_dependencies
rvm remove 1.9.2

〜/ .rvm/scripts /関数/ pkgへの削除を元に戻します
次に、このコマンドを使用して1.9.2をインストールしました(これも、必要かどうかはわかりませんが、これが使用したreeインストールからのものです)

rvm install 1.9.2 --with-readline-dir=$rvm_usr_path --with-iconv-dir=$rvm_usr_path --with-zlib-dir=$rvm_usr_path --with-openssl-dir=$rvm_usr_path

そして今、すべてが正常に機能しているように見えます。それが誰かの助けになることを願っています。

4
shane

私のセットアップはubuntu11.10、RVM 1.10.2、Ruby 1.9.3です。

このreadlineの問題は、irbの実行時にエラーを発生させ、エラーのためにRailsコンソールの実行を妨げていました:

'require':そのようなファイルをロードできません--readline(LoadError)

私のために働いた解決策は、ブライアン・ラーセンによって説明されたものでした。

--skip-autoreconfの有無にかかわらず、readlineをpkgインストールしないでください

Rvm要件で指示されているapt-getinstallを実行してから、

rvm --skip-autoreconfpkgアンインストールreadline

rvm remove 1.9.3

rvmインストール1.9.3

先端ブライアンのためのThx。

2
David Mountain

これらの手順により、以前にRubyをコンパイルし、実行するたびに「compile readlinemissing」エラーが継続的に発生した後の問題(Lubuntu 12.04)が修正されました。

Sudo aptitude install build-essential openssl libreadline6 \
                      libreadline6-dev curl git-core zlib1g zlib1g-dev \
                      libssl-dev libyaml-dev libsqlite3-dev sqlite3 \
                      libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev \
                      automake libtool bison Subversion
rvm pkg uninstall readline
rvm remove 1.9.3
rvm install 1.9.3
2
punkdata

パッケージをインストールする回避策を試すことができますlibreadline5-devlibreadline6-devは現在機能していないと思います。

1

残念ながら、これらのどれも私のために働きませんでした。 http://beginrescueend.com/packages/readline/ からクイックフィックスを使用することになりました

それで私の問題は解決しました。

1
HannesBenson

ロジックについて聞いたすべてのことを忘れて、ここを見て、同じステップバイステップを実行してください。

  (ubuntu x64):

 $ Ruby extconf.rb 
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no

$ Sudo aptitude install libedit-dev
..

$ Ruby extconf.rb
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... yes
checking for rl_getc_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_username_completion_function() in stdio.h,readline/readline.h,readline/history.h... no
checking for rl_completion_matches() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_refresh_line() in stdio.h,readline/readline.h,readline/history.h... no
checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_editing_mode in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_line_buffer in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_point in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_sigwinch in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_signals in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_cleanup_after_signal() in stdio.h,readline/readline.h,readline/history.h... no
checking for rl_clear_signals() in stdio.h,readline/readline.h,readline/history.h... no
checking for rl_set_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_get_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_vi_editing_mode() in stdio.h,readline/readline.h,readline/history.h... no
checking for rl_emacs_editing_mode() in stdio.h,readline/readline.h,readline/history.h... no
checking for replace_history_entry() in stdio.h,readline/readline.h,readline/history.h... no
checking for remove_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for clear_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for RL_Prompt_START_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes
checking for RL_Prompt_END_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes
creating Makefile

とにかく不足している関数が多すぎますが...次に実行してください

$ rvm pkg uninstall readline
...
╰─○ Ruby extconf.rb                                                    
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... yes
checking for rl_getc_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_username_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_matches() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_refresh_line() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_Word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_editing_mode in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_line_buffer in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_point in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_sigwinch in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_signals in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_cleanup_after_signal() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_clear_signals() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_set_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_get_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_vi_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_emacs_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes
checking for replace_history_entry() in stdio.h,readline/readline.h,readline/history.h... yes
checking for remove_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for clear_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for RL_Prompt_START_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes
checking for RL_Prompt_END_IGNORE in stdio.h,readline/readline.h,readline/history.h... yes
creating Makefile
$ make
compiling readline.c
linking shared-object readline.so
$ make install
/usr/bin/install -c -m 0755 readline.so /home/sky/.rvm/rubies/Ruby-1.9.3-p194/lib/Ruby/site_Ruby/1.9.1/x86_64-linux
installing default readline libraries



irb
1.9.3-p194 :001 > 

あなたはそれが私にとってうまく働いているのを見ることができます。

1-libedit-devをインストールすることを忘れないでください

# dpkg --get-selections| egrep '(readline|libedit)'
libedit-dev                                     install # <= BSD PACKAGE, not GNU, but... it is work fine to me
libedit2                                        install # the same story as previous
libreadline-dev                                 install
libreadline5                                    install
libreadline6                                    install
libreadline6-dev                                install
readline-common                                 install

2-pkgreadlineをアンインストールします

$ rvm pkg uninstall readline

3 $ rvm_path/src/Ruby-#{version}/ext/readlineに移動して実行します

$ Ruby extconf.rb; make; make install

4-頭痛を忘れる

0
mart7ini

私にとっては、rvmの最新バージョンで箱から出してすぐに機能しました。私のステップ

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

rvm requirementsによると:

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

rvm install 1.9.3

rvm
0
Michael Franzl

Bundler を使用している場合は、次のことが役立つ場合があります。

echo "gem 'rb-readline'" >> Gemfile
bundle install
0
Vadym Tyemirov