11 Mar 2014, 17:50Installing Ruby with RVM on Archlinux
I’ve started doing some Ruby development. The commonly used platform for the development team(s) tends to be one of OS X, Ubuntu, or Mint. I do not fall in to that category.
Getting RVM to install Ruby under Archlinux was fraught with issues. Most of them were trivial and just a matter of getting the right dependencies installed. There was, though, one issue that was particularly misleading. When trying to
rvm install 2.1.1, I received this error:
Error running '__rvm_make -j2', showing last 15 lines of /home/sbarker/.rvm/log/1394556125_ruby-2.1.1/make.log make: Leaving directory '/home/sbarker/.rvm/src/ruby-2.1.1/ext/readline' exts.mk:199: recipe for target 'ext/readline/all' failed make: *** [ext/readline/all] Error 2 make: *** Waiting for unfinished jobs.... compiling ossl_x509crl.c compiling ossl_digest.c compiling ossl_pkey_rsa.c compiling ossl_engine.c compiling ossl_ssl.c installing default openssl libraries linking shared-object openssl.so make: Leaving directory '/home/sbarker/.rvm/src/ruby-2.1.1/ext/openssl' make: Leaving directory '/home/sbarker/.rvm/src/ruby-2.1.1' uncommon.mk:180: recipe for target 'build-ext' failed make: *** [build-ext] Error 2 There has been an error while running make. Halting the installation.
A similar-ish error occurred when trying to install Ruby 2.0.0.
Initially this looked to be an error with OpenSSL dependencies. I spent longer than I would care to admit going down that road, trying several different options, including
rvm autolibs enable, all to no avail. I finally gave up, and in admitting defeat, spun up an Ubuntu VM. And behold, the same error occurred. It wasn’t an OS issue.
Back to the drawing board, I dove in to
make the package by hand to see if I could discover anything new. As it turns out, seeing the full context around the error pointed me in the right direction.
The first bit of the error reported by RVM is the key.
Error running '__rvm_make -j2', showing last 15 lines of /home/sbarker/.rvm/log/1394556125_ruby-2.1.1/make.log make: Leaving directory '/home/sbarker/.rvm/src/ruby-2.1.1/ext/readline' exts.mk:199: recipe for target 'ext/readline/all' failed make: *** [ext/readline/all] Error 2 make: *** Waiting for unfinished jobs....
The issue lies with
readline and not with
openssl dependencies. RVM’s
autolibs setting obviously didn’t trigger, since
readline was present. I told RVM to install its own
rvm pkg install readline. When that finished building, I attempted to install Ruby 2.1.1 again with
rvm install 2.1.1 -C --with-readline-dir=$HOME/.rvm/usr. The result, great success. RVM happily downloaded, built, and installed 2.1.1 for me. I repeated this for 2.0.0 and also had great success. 1.9.3 was never an issue, and that continued to be not an issue.