conocode
このコード
トラブルシューティング

yum update で [Errno 5] [Errno 12] Cannot allocate memory

yum update したら [Errno 5] [Errno 12] Cannot allocate memory になったんですけど
読んで字のごとくメモリが足りないんじゃ。。。
AWS EC2 の nano インスタンスなんで500MBぐらいしかないんです。なんとかなりませんか?
仮想メモリを増やせば動くと思うよ

AWS EC2 の最低スペックで動かしているマシンがあったのですが、そこで yum update を行ったところ

[Errno 5] [Errno 12] Cannot allocate memory

となってしまいました。

エラーになった原因

あぁ、最低スペックなんでメモリが500MBぐらいなんです。

メッセージそのまんまですね。

エラーへの対処

メモリ不足が原因ですのでメモリを増やしてあげれば解決するのですが、EC2の物理メモリはインスタンスタイプ毎に決められているので物理メモリを増やすわけにはいきません

そこで、LINUXのしくみで、ディスクをメモリ代わりに使用する仮想メモリというものを追加します。

fallocate -l 512M /swapfile

これで仮想メモリとして使うスワップファイルを確保します。-l の後には追加する大きさを指定します。

chmod 600 /swapfile

スワップファイルのアクセス権を設定

mkswap /swapfile

仮想メモリとして使うファイルとして指定

swapon /swapfile

仮想メモリを有効にします

以上の手順で swapon failed: Invalid argument というエラーが出てしまう場合は以下の手順をお試しください

まず、先ほど作成した swapfile を削除します。その後以下のコマンドラインを入力してください。(fallocate を dd に変えただけです)

dd if=/dev/zero of=/swapfile count=512000 bs=1K
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

以上の操作がエラーなく終わったら改めて yum update

無事にアップデートが完了しました。

仮想メモリの大きさは自由に変更できますので、上記のコマンドの512の部分を適切な数値に変更してお試しください。