2013-11-04 4 views
13
rvm install 1.9.3 

führt zu dem Fehler in der make.log:Wie kompiliere ich Ruby mit RVM auf einem Low-Memory-System?

... 
compiling ./enc/trans/emoji_sjis_docomo.c 
compiling ./enc/trans/emoji_sjis_kddi.c 
gcc: internal compiler error: Killed (program cc1) 
gcc: internal compiler error: Killed (program cc1) 
gcc: internal compiler error: Killed (program cc1) 
Please submit a full bug report, 
with preprocessed source if appropriate. 
... 

dmesg zeigt

[180031.341709] send sigkill to 3705 (cc1), adj 0, size 3394 

free zeigt an einem gewissen Punkt läuft configure Prozess:

   total  used  free  shared buffers  cached 
Mem:  241668  238676  2992   0   92  2020 
-/+ buffers/cache:  236564  5104 
Swap:  262140  262140   0 

Also gehe ich davon das 256MB RAM und 256MB Swap ist nicht enou Gh, um Ruby darauf zu kompilieren.

ich gelesen, dass es möglich sein sollte, einige Parameter für gcc finden Sie unter: http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps

Aber

rvm install 1.9.3 --with-CFLAGS="$CFLAGS --param ggc-min-expand=0 --param ggc-min-heapsize=8192" 

die Flaggen auf gcc geben nicht funktioniert, ist log immer noch das gleiche für die flags:

command(2): __rvm_make -j4 
     CC = gcc 
     LD = ld 
     LDSHARED = gcc -shared 
     CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-fiel$ 
     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 

Wie kompiliert Ruby auf dieser Maschine?

+1

Versuch 'rvm installieren 1.9.3 - CFLAGS =" $ CFLAGS --param GGC-min-expand = 0 --param GGC-min-Heapsize = 8192" '' – mpapis

+0

[205.242,284757] senden SIGKILL an 17549 (KK1), adj 0, Größe 11726' auch. Nun hat die make.log diese CFLAGS: 'CFLAGS = --param GGC-min-expand = 0 --param GGC-min-Heapsize = 8192 -fPIC' Es gibt einige Fahnen fehlen, die anfänglich/oben dargestellt sind. make.log weiter mit: '.. Projektierungs -test-/FUNCALL Projektierungs -test-/load/dot.dot gcc: interner Fehler Compiler: Killed (Programm cc1) gcc: interner Compiler-Fehler: Killed (Programm cc1) einreichen Bitte eine vollständige Fehlerbericht, mit vorverarbeiteten Quelle falls. .. ' und mit ' endet zlib' – marc

+0

exportiert CFLAG variable Konfiguration jetzt ist es 'echo $ CFLAGS': ' CFLAGS = --param GGC-min-expand = 0 --param GGC-Min- hopsize = 8192 -fPIC'. 'Rvm 1.9.3' führt erneut installieren, um zu make.log' CFLAGS = --param GGC-min-expand = 0 --param GGC-min-Heapsize = 8192 -fPIC' und gleicht aus dem Speicher zu verlassen. – marc

Antwort

27

eine 512 MB Swap-Datei erstellen das Problem gelöst. Hier sind die Schritte:

sudo mkdir -p /var/cache/swap/ 
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=512 
sudo chmod 0600 /var/cache/swap/swap0 
sudo mkswap /var/cache/swap/swap0 
sudo swapon /var/cache/swap/swap0 

Die Auslagerungsdatei wird nach einem Neustart nicht verwendet. Es kann in /etc/fstab integriert wird es nach dem Neustart zu verwenden:

/var/cache/swap/swap0 none swap sw  0 0 

die obigen Schritte eine Swap-Datei zu erstellen, die ich hier gefunden (in deutscher Sprache): http://wiki.ubuntuusers.de/Swap#Swap-als-Datei - Lizenz für den obigen Inhalt: http://creativecommons.org/licenses/by-nc-sa/2.0/de/deed.en (Attribution-NonCommercial- ShareAlike 2.0 Deutschland (CC BY-NC-SA 2.0 DE))