コンパイルエラー:メモリ・スワップ領域
Bài đăng này đã không được cập nhật trong 9 năm
Vagrantでtherubyracerのgemをインストールしようとしたらcannot allocate memoryというコンパイルエラーが出たので対処しました。
実行環境
- vagrant 1.7.2
- virtualbox 4.3.28
- guestOS ubuntu 14.04 memory:1024MB,HDD:40GB
- ruby 2.1.1
今回はスワップファイルを作る事で問題を解決します。
コンパイルができない原因はメモリで作業領域の不足からきています。 解決する方法は2パターンあってメモリを割り当てを増やすかスワップ領域をつくるかです。
どちらにするか迷いましたがストレージの容量が余っていたのでスワップファイルを作る事にしました。
まずはスワップファイルの容量を確認
$ free -m
total used free shared buffers cached
Mem: 993 894 99 0 7 27
-/+ buffers/cache: 858 135
Swap: 0 0 0
スワップファイルが作られていないので0になっていました。
次はスワップファイルに割り当てる領域の作成しましょう。
$ sudo fallocate -l 4G /etc/swapfile
$ ls -lh /etc/swapfile
-rw-r--r-- 1 root root 4.0G Jun 4 08:30 /etc/swapfile
ちゃんと/etcの下に作られています。
先ほど作ったファイルをスワップファイルに指定します。
$ sudo mkswap /etc/swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=03657f48-fa60-4f66-b108-c12a7b029145
ここで終わりではありません。スワップファイルの確認をしてみるとまだ0の状態です。
$ free -m
total used free shared buffers cached
Mem: 993 899 94 0 8 30
-/+ buffers/cache: 860 133
Swap: 0 0 0
最後にスワップファイルを有効化します
$ sudo swapon /etc/swapfile
$ free -m
total used free shared buffers cached
Mem: 993 900 93 0 8 30
-/+ buffers/cache: 861 132
Swap: 4095 0 4095
4GB割り当てられています。
$ gem install therubyracer
Building native extensions. This could take a while...
Successfully installed therubyracer-0.12.2
1 gem installed
無事にインストールできました。
All rights reserved