Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

解決策がわかんなくてハゲそうだったので、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するような動きをするので、メモリが足らなくなったんだろうなあ)

おわり。

takoba
インターネットと音楽とカレーライスを主にたべます
https://twitter.com/takoba_
schoo
学べる生放送コミュニケーションサービス
https://schoo.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away