Ruby1.9.1 compilation hangs and fills swap
I am building Ruby 1.9.1-p376 under Ubuntu 8.04 LTS server (64-bit) by doing the following:
$ ./configure $ make $ sudo make install
./configure
works without complaints.
make
hangs endlessly until all my ram and swap are gone. It gets stuck after following exit:
compiling ripper
make[1]: Entering directory `/tmp/ruby1.9.1/ruby-1.9.1-p376/ext/ripper'
gcc -I. -I../../.ext/include/x86_64-linux -I../.././include -I../.././ext/ripper -I../.. -I../../. -DRUBY_EXTCONF_H=\"extconf.h\" -fPIC -O2 -g -Wall -Wno-parentheses -o ripper.o -c ripper.c
If I run the command gcc
manually, with an argument -v
to get verbose output, it hangs after the following:
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
/usr/lib/gcc/x86_64-linux-gnu/4.2.4/cc1 -quiet -v -I. -I../../.ext/include/x86_64-linux -I../.././include -I../.././ext/ripper -I../.. -I../../. -DRUBY_EXTCONF_H="extconf.h" ripper.c -quiet -dumpbase ripper.c -mtune=generic -auxbase-strip ripper.o -g -O2 -Wall -Wno-parentheses -version -fPIC -fstack-protector -fstack-protector -o /tmp/ccRzHvYH.s
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.2.4/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/usr/include/x86_64-linux-gnu"
ignoring duplicate directory "../.././ext/ripper"
ignoring duplicate directory "../../."
#include "..." search starts here:
#include <...> search starts here:
.
../../.ext/include/x86_64-linux
../.././include
../..
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.2.4/include
/usr/include
End of search list.
GNU C version 4.2.4 (Ubuntu 4.2.4-1ubuntu4) (x86_64-linux-gnu)
compiled by GNU C version 4.2.4 (Ubuntu 4.2.4-1ubuntu4).
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32795
Compiler executable checksum: 6e11fa7ca85fc28646173a91f2be2ea3
I just compiled ruby ββon another computer for reference and it took about 10 seconds to print the following output (after the line above Compiler executable checksum
):
COLLECT_GCC_OPTIONS='-v' '-I.' '-I../../.ext/include/i686-linux' '-I../.././include' '-I../.././ext/ripper' '-I../..' '-I../../.' '-DRUBY_EXTCONF_H="extconf.h"' '-D_FILE_OFFSET_BITS=64' '-fPIC' '-O2' '-g' '-Wall' '-Wno-parentheses' '-o' 'ripper.o' '-c' '-mtune=generic' '-march=i486'
as -V -Qy -o ripper.o /tmp/cca4fa7R.s
GNU assembler version 2.20 (i486-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.20
COMPILER_PATH=/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/4.4.1/:/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-I.' '-I../../.ext/include/i686-linux' '-I../.././include' '-I../.././ext/ripper' '-I../..' '-I../../.' '-DRUBY_EXTCONF_H="extconf.h"' '-D_FILE_OFFSET_BITS=64' '-fPIC' '-O2' '-g' '-Wall' '-Wno-parentheses' '-o' 'ripper.o' '-c' '-mtune=generic' '-march=i486'
I have absolutely no clue what might be wrong here - any ideas where I should start?
Edit: fsck output
$ sudo fsck -n
fsck 1.40.8 (13-Mar-2008)
e2fsck 1.40.8 (13-Mar-2008)
Warning! /dev/sda1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sda1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Deleted inode 557058 has zero dtime. Fix? no
Inodes that were part of a corrupted orphan linked list found. Fix? no
Inode 557059 was part of the orphaned inode list. IGNORED.
Inode 557060 was part of the orphaned inode list. IGNORED.
Inode 557061 was part of the orphaned inode list. IGNORED.
Inode 557062 was part of the orphaned inode list. IGNORED.
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (2026992, counted=2014241).
Fix? no
Inode bitmap differences: -(557058--557062)
Fix? no
Free inodes count wrong (1130174, counted=1129768).
Fix? no
/dev/sda1: ********** WARNING: Filesystem still has errors **********
/dev/sda1: 115010/1245184 files (0.7% non-contiguous), 463376/2490368 blocks
a source to share
You need:
sudo apt-get update
sudo apt-get -y install libc6-dev libssl-dev libmysql++-dev libsqlite3-dev make build-essential libssl-dev libreadline5-dev zlib1g-dev
Then try installing ruby ββagain.
EDIT:
you can also try:
sudo apt-get install ruby1.9.1-full
or try another version 1.9.1
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz
to see if it is your machine or ruby ββcode.
a source to share
I had this problem on CentOS 5.6 with Ruby 1.9.3 and tried about a million things. In the end, I installed apt-get on my CentOS machine and then ran:
sudo apt-get update
sudo apt-get upgrade
This updated the following packages (among others that were not up to date):
libffi (3.0.5-1.el5 => 3.0.9-1.el5.rf)
libffi-devel (3.0.5-1.el5 => 3.0.9-1.el5.rf)
libyaml (0.1.2-3.el5 => 0.1.4-1.el5.rf)
libyaml-devel (0.1.2-3.el5 => 0.1.4-1.el5.rf)
which somehow fixed it.
I have no clue as to why or how, but it was this that finally allowed the Ruby installation to complete.
a source to share