Tuesday, April 29, 2014

Upgrading to ruby 2.1.1 on OSX

I prefer to use rbenv to manage my system rubies.

Commands to install new version of ruby via rbenv


$ brew update
$ brew upgrade ruby-build
$ rbenv install 2.1.1
$ rbenv rehash


If you notices compilation errors such as the following, then provide a reference to the readline dynamic library via the RUBY_CONFIGURE_OPTS environment variable.

Compilation Error


linking shared-object objspace.bundle
readline.c: In function ‘Init_readline’:
readline.c:1977: error: ‘Function’ undeclared (first use in this function)
readline.c:1977: error: (Each undeclared identifier is reported only once
readline.c:1977: error: for each function it appears in.)
readline.c:1977: error: expected expression before ‘)’ token
make[2]: *** [readline.o] Error 1
make[1]: *** [ext/readline/all] Error 2

Pass readline's dynamic library reference to rbenv install command


(RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.dylib" rbenv install 2.1.1)

Console

Here's the console log that shows errors along the way and the eventual successful installation of ruby 2.1.1.

$ brew update
Already up-to-date.
$ brew upgrade ruby-build
==> Upgrading 1 outdated package, with result:
ruby-build 20140420
==> Upgrading ruby-build
==> Downloading https://github.com/sstephenson/ruby-build/archive/v20140420.tar.gz
######################################################################## 100.0%
==> ./install.sh
🍺  /usr/local/Cellar/ruby-build/20140420: 115 files, 492K, built in 2 seconds
$ rbenv install 2.1.1
Downloading ruby-2.1.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e57fdbb8ed56e70c43f39c79da1654b2
Installing ruby-2.1.1...

BUILD FAILED

Inspect or clean up the working tree at /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162005.40162
Results logged to /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162005.40162.log

Last 10 log lines:
compiling ossl_x509crl.c
compiling ossl_x509ext.c
compiling ossl_x509name.c
compiling ossl_x509req.c
compiling ossl_x509revoked.c
compiling ossl_x509store.c
installing default openssl libraries
linking shared-object openssl.bundle
linking shared-object nkf.bundle
make: *** [build-ext] Error 2
$ subl /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162005.40162.log
$ (RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.so" rbenv install 2.1.1)
Downloading ruby-2.1.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e57fdbb8ed56e70c43f39c79da1654b2
Installing ruby-2.1.1...
^C
BUILD FAILED

Inspect or clean up the working tree at /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162319.57115
Results logged to /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162319.57115.log

Last 10 log lines:
checking for dlopen in -ldl... yes
checking for shl_load in -ldld... no
checking for shutdown in -lsocket... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking limits.h usability... yes
checking limits.h presence...
BUILD FAILED

Inspect or clean up the working tree at /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162319.57115
Results logged to /var/folders/kg/3_wp8l4j6cv758ldc2v6n07c0000gn/T/ruby-build.20140429162319.57115.log

Last 10 log lines:
checking for dlopen in -ldl... yes
checking for shl_load in -ldld... no
checking for shutdown in -lsocket... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking limits.h usability... yes
checking limits.h presence... $
$ (RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.so" rbenv install 2.1.1)
$ find /usr -name  "libreadline.*"
/usr/lib/libreadline.dylib
/usr/local/Cellar/readline/6.2.4/lib/libreadline.6.2.dylib
/usr/local/Cellar/readline/6.2.4/lib/libreadline.6.dylib
/usr/local/Cellar/readline/6.2.4/lib/libreadline.a
/usr/local/Cellar/readline/6.2.4/lib/libreadline.dylib
/usr/local/Cellar/readline/6.3.3/lib/libreadline.6.2.dylib
/usr/local/Cellar/readline/6.3.3/lib/libreadline.6.3.dylib
/usr/local/Cellar/readline/6.3.3/lib/libreadline.6.dylib
/usr/local/Cellar/readline/6.3.3/lib/libreadline.a
/usr/local/Cellar/readline/6.3.3/lib/libreadline.dylib
find: /usr/local/var/run/nginx/client_body_temp: Permission denied
find: /usr/local/var/run/nginx/fastcgi_temp: Permission denied
find: /usr/local/var/run/nginx/proxy_temp: Permission denied
find: /usr/local/var/run/nginx/scgi_temp: Permission denied
find: /usr/local/var/run/nginx/uwsgi_temp: Permission denied
find: /usr/sbin/authserver: Permission denied
$ brew install openssl libyaml
Warning: openssl-1.0.1g already installed
Warning: libyaml-0.1.6 already installed
$ brew tap homebrew/dupes && brew install apple-gcc42
Warning: Already tapped!
Warning: apple-gcc42-4.2.1-5666.3 already installed
$ ls -l /etc/gemrc
ls: /etc/gemrc: No such file or directory
$ ls -l /usr/lib/libreadline.dylib
lrwxr-xr-x  1 root  wheel  15 Jan  9 23:44 /usr/lib/libreadline.dylib -> libedit.3.dylib
$ (RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.dylib" rbenv install 2.1.1)
Downloading ruby-2.1.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e57fdbb8ed56e70c43f39c79da1654b2
Installing ruby-2.1.1...
Installed ruby-2.1.1 to /Users/lex/.rbenv/versions/2.1.1
$ rbenv global 2.1.1
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
$ rbenv versions
  system
  1.9.3-p327
  1.9.3-p448
  1.9.3-p484
* 2.1.1 (set by /Users/lex/.rbenv/version)
  rbx-2.2.3
  ruby-with-ssl-2.0.0-p353


Full set of commands to run to install Ruby 2.1.1 on OSX


brew update
brew doctor
brew upgrade ruby-build
brew install openssl libyaml
brew tap homebrew/dupes && brew install apple-gcc42
ls -l /usr/lib/libreadline.dylib
(RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/lib/libreadline.dylib" rbenv install 2.1.1)
rbenv rehash
rbenv versions
rbenv global 2.1.1
ruby -v
gem install rb-readline
gem uninstall bundler
gem install bundler


Fix Up/Down Arrow Keys in irb console

Are your Up/Down arrow keys broken in irb?

Do you see the following in your irb console when you hit the up arrow key and then the down arrow key?

^[[A^[[B

Just install the rb-readline gem.

References

https://github.com/sstephenson/ruby-build/wiki

No comments:

Post a Comment