LoginSignup
8
10

More than 5 years have passed since last update.

EC2インスタンス上にて、npmでpackageをinstallしようとするとKilledって返ってくる問題

Last updated at Posted at 2013-10-23

解決策がわかんなくてハゲそうだったので、Qiitaに書いて整理してたら解決しました。Qiitaすごい!!!!!

環境

  • OS
    • CentOS 6.4, x86_64
    • EC2インスタンスです
  • node.js
    • v0.10.21
    • nvmでuserディレクトリにinstallしてます
  • npm
    • v1.3.11

症状

たとえばjshintをinstallしようとすると、こんなかんじです。

$ npm install -g jshint
npm http GET https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/jshint
npm http GET https://registry.npmjs.org/jshint/-/jshint-2.3.0.tgz
npm http 200 https://registry.npmjs.org/jshint/-/jshint-2.3.0.tgz
Killed

当該packageはDLできてるっぽいんですけど、そのあとしばらく停止してKilledって返ってくる…

試しにcurrentにinstallしてみる

gオプションつけないでやってみた

$ mkdir jshint
$ cd jshint/
$ npm install jshint
npm http GET https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/jshint
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/shelljs
npm http GET https://registry.npmjs.org/cli
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/console-browserify
npm http 200 https://registry.npmjs.org/console-browserify
npm http 200 https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/console-browserify/-/console-browserify-0.1.6.tgz
npm http 200 https://registry.npmjs.org/cli
npm http 200 https://registry.npmjs.org/shelljs
npm http 200 https://registry.npmjs.org/minimatch
Killed

依存packageも解決しようとしてるけど、DLまでいけてないかんじ…?

原因&解決

「なんだこれまじでハゲそう」と思いながらググってたら、"Killed"ってレスポンスはどうやらnpm自体というよりはNode.js自体から返ってきてそう、みたいな予感がしてきた。たぶんプロセスが途中で落ちてる。

で、そういえばEC2インスタンスってswapないんだよなあ、なんてことを思い出して、それ(swap)使えないことでメモリ足りなくなって落ちてるんじゃね?とか思い始めて、以下のエントリを参考にswapを作ってみた。

AWS - 1分でできる!AmazonEC2のmicroインスタンスでswap領域を作る - Qiita [キータ]

そうすると、

$ npm install -g jshint
(中略…)
$HOME/.nvm/v0.10.21/bin/jshint -> $HOME/.nvm/v0.10.21/lib/node_modules/jshint/bin/jshint
jshint@2.3.0 $HOME/.nvm/v0.10.21/lib/node_modules/jshint
├── console-browserify@0.1.6
├── underscore@1.4.4
├── shelljs@0.1.4
├── minimatch@0.2.12 (sigmund@1.0.0, lru-cache@2.3.1)
└── cli@0.4.5 (glob@3.2.6)

あっ、installできた。

おわりに

必要以上に騒ぎ立てた感満載なエントリですが、とりあえずswap領域は大事なんだなあ、と実感した出来事でした。
(たぶんnpmが再帰的にpackageをたくさんinstallするような動きをするので、メモリが足らなくなったんだろうなあ)

おわり。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10