Hey I’m just to update ruby on a linux server I ssh into. I know there a lot of threads on this but most are for installing on mac osx (which i dont have an issue with). This is the error log thats outputted:
$ rvm install 1.9.3 ruby-1.9.3-p551 - #removing src/ruby-1.9.3-p551.. Searching for binary rubies, this might take some time. No binary rubies available for: unknown/libc-2.12/x86_64/ruby-1.9.3-p551. Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies. Checking requirements for unknown. Install: press any key to continue Install: build-essential libreadline zlib1g libyaml libc6 libgdbm ncurses press any key to continue Requirements installation successful. Installing Ruby from source to: /home/swampu6/.rvm/rubies/ruby-1.9.3-p551, this may take a while depending on your cpu(s)... ruby-1.9.3-p551 - #downloading ruby-1.9.3-p551, this may take a while depending on your connection... ruby-1.9.3-p551 - #extracting ruby-1.9.3-p551 to /home/swampu6/.rvm/src/ruby-1.9.3-p551.... ruby-1.9.3-p551 - #applying patch /home/swampu6/.rvm/patches/ruby/GH-488.patch. ruby-1.9.3-p551 - #applying patch /home/swampu6/.rvm/patches/ruby/1.9.3/CVE-2015-1855-p484.patch. ruby-1.9.3-p551 - #configuring............................................. ruby-1.9.3-p551 - #post-configuration.. ruby-1.9.3-p551 - #compiling... Error running '__rvm_make -j48', showing last 15 lines of /home/swampu6/.rvm/log/1437856022_ruby-1.9.3-p551/make.log XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I. DLDFLAGS = -Wl,-soname,libruby.so.1.9 SOLIBS = -lpthread -lrt -ldl -lcrypt -lm compiling main.c compiling dmydln.c compiling dmyencoding.c compiling version.c compiling miniprelude.c compiling array.c compiling bignum.c make: vfork: Resource temporarily unavailable make: vfork: Resource temporarily unavailable compiling dmyversion.c ++ return 2 There has been an error while running make. Halting the installation.
this is the content of the make.log per a commenter’s request:
[2015-07-25 16:27:22] __rvm_make __rvm_make () { make "$@" || return $? } current path: /home/swampu6/.rvm/src/ruby-1.9.3-p551 PATH=/usr/kerberos/bin:/home/swampu6/perl5/bin:/usr/lib/courier-imap/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/home/swampu6/.rvm/bin:/home/swampu6/bin:/home/swampu6/.rvm/bin command(2): __rvm_make -j48 ++ make -j48 CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I. DLDFLAGS = -Wl,-soname,libruby.so.1.9 SOLIBS = -lpthread -lrt -ldl -lcrypt -lm compiling main.c compiling dmydln.c compiling dmyencoding.c compiling version.c compiling miniprelude.c compiling array.c compiling bignum.c make: vfork: Resource temporarily unavailable make: vfork: Resource temporarily unavailable compiling dmyversion.c ++ return 2
Advertisement
Answer
I think your issue is that, since RVM is trying to compile ruby with the command __rvm_make -j48
(which tells the compiler to try to parallelize the compilation across 48 different jobs), your host system is running out of space to do so. Before I get to a possible solution, here are some high-level thoughts:
Production systems generally shouldn’t be compiling their own Ruby versions. Instead, ship the compiled binaries to the node (e.g., as a Debian package) and don’t even install RVM.
rvm
does a lot of magic to try and hide the details of what its doing from the end-user, but in my experience that’s more trouble than it’s worth. Use chruby or rbenv and build Ruby only when you need to.
Anyway, for your current issue, I think your best bet is to try to override the -j
flag to a smaller value. There are a few methods, but first try this:
rvm install 1.9.3 -j 1 # from http://cheat.errtheblog.com/s/rvm
If that doesn’t help, double-check that the -j
argument in __rvm_make -j 48
actually changed to 1 in the log. If it did, try a smaller number. If it didn’t, then try this:
MAKEFLAGS=-j1 rvm install ruby-1.9.3 # from https://twitter.com/avdi/status/130720270733410305
Hopefully one of those works!