composer-install的一个错误

若教眼底无离恨,不信人间有白头。

composer insatall が失敗す

PHP のライブラリの依存関係を管理する composer ですが、composer install でインストールをしようとすると killed で失敗してしまうのでその原因を調べました。
ちなみに Laravel の環境を作っている最中でした。

现象

1
2
3
4
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

パッケージをインストールしようとすると上記のような感じで killed で中途半端に終わります。composer install -vvv で詳細な進捗が表示されるので実行して見てみると、順調に進んでいる途中でプチっと途切れてしまいます.

原因

原因はメモリ不足です。

どうも killed で終わるのは Linux がメモリ不足でシステム停止する恐れがあるときに、メモリを多く消費しているプロセスを強制的に殺しているかららしいです。OOM Killer という機能です。

composer install を実行すると、依存関係をいろいろと調整したりするためにデータを読み込んだりするのですが、それが大きくなるとメモリの消費量が大きくなりすぎます。そして限界がきて OS からプロセスが殺されます。

解决

原因がメモリ不足なのでメモリの割り当てを増やすことで解決できます。

メモリを増やすのが難しければ、スワップ領域を増やしてやればよいです。私はスワップ領域に1GB分割り当てて解決しました。

1
2
3
# dd if=/dev/zero of=/var/swap bs=1M count=1024
# mkswap /var/swap
# swapon /var/swap

/var/swap ファイルに 1024MB(1GB)分のファイルを作って割り当てています。これで再実行すれば正常に完了するはずです。

以上。

https://webbibouroku.com/Blog/Article/composer-killed