12/08/2018, 09:50
コンパイルエラー:メモリ・スワップ領域
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パターンあってメモリを割り当てを増やすかスワップ領域をつくるかです。 ...
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
無事にインストールできました。