更新中にComposerが終了しました


116

問題が発生したため、Laravel 4プロジェクトに新しいパッケージをインストールしようとしました。でも走るとphp composer.phar updateと私はこれを取得します:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

インターネットで問題を探しましたが、メモリに問題があることがわかりました。利用可能なRAMが不足しているようです。これを確認したところ、約411MBの空き容量があります。composerは本当により多くのRAMを必要としますか?

回答:


291

「Kill​​ed」メッセージは通常、プロセスがメモリを消費しすぎていることを意味するため、可能であればシステムにメモリを追加する必要があるだけかもしれません。この回答を書いている時点では、取得するために仮想マシンのメモリを少なくとも768MBに増やす必要がありました。composer update状況によっては作業よう。

ただし、ライブサーバーでこれを行う場合はcomposer update、まったく使用しないでください。あなたが代わりにすべきことは:

  1. 走る composer updateメモリの制限が厳しいようであってはならない(たとえば、直接あなたの物理的なノートパソコン/デスクトップ、またはドッキングウィンドウコンテナ上/ VMは、あなたのラップトップ/デスクトップ上で実行されているような)ローカル環境で。
  2. アップロードまたは git push composer.lockファイルをます。
  3. composer installライブサーバーで実行します。

composer install次に、.lockファイルから読み取り、すべてのパッケージの最新バージョンを見つけるのではなく、まったく同じバージョンを毎回フェッチします。これにより、アプリが壊れる可能性が低くなり、composerが使用するメモリが少なくなります。

詳しくはこちらをご覧くださいhttps : //getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

または、vendorディレクトリ全体をサーバーにアップロードして、実行する必要をcomposer installまったく回避してから、を実行する必要がありますcomposer dump-autoload --optimize


5
composer.lockをアップロードしてcomposer installを実行すると、うまくいきました。ありがとう!
イーサン2017

これは私にはうまくいきません、作曲家はaptによるインストーラーだったので、それを削除して手動でインストールすると、すべてうまくいきます。
rafaelphp 2018年

2
ローカルマシンでこの問題が発生しています。
afilina

ローカル開発の場合は、@ BalmiporのAnswer、または少量のRAMを備えたその他のサーバーを使用してください。
Shawn Pivonka

71

私のように、メモリ不足のマイクロVMを使用している場合は、スワップファイルを作成するとうまくいきます。

#Check free memory before
free -m

mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory.  Feel free to add MORE
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
#Automatically mount this swap partition at startup
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab

#Check free memory after
free -m

いくつかのコメントが指摘したように、sudoを追加することを忘れないでください rootで作業しない場合は。

ところで、ファイルには別の場所/ファイル名/サイズを自由に選択してください。
/varおそらく最適な場所ではありませんが、どちらの場所がよいかはわかりません。ほとんどの場合、小さなサーバーがテスト目的で使用されるため、気にする必要はありません。


4
忘れないでくださいsudo–これらのコマンドを実行するには、root権限を使用する必要がありました。
MacDada

戻るswapon: swapfile: swapon failed: Operation not permitted、なぜ?
Muhammad Dyas Yaskur

@Muhammad Dyas Yaskur権限の問題がない場合(rootで作業するか、sudoを使用することを忘れないでください)、構成(OS、ドライブのタイプなど)に他に何か特別なものがありますか?
バルミプール

@Balmipour私はすでにルートとして使用していますが、許可されていません。私のOSはcentos 7.0です。 [root@server _swap_]# dd if=/dev/zero of=swapfile bs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 2.79954 s, 375 MB/s [root@server _swap_]# ls -l total 1024004 -rw------- 1 root root 1048576000 Feb 6 02:12 swapfile [root@server _swap_]# mkswap swapfile Setting up swapspace version 1, size = 1023996 KiB no label, UUID=b3f1110e-5f43-4d1f-bbb1-71cad96680f9 [root@server _swap_]# swapon swapfile swapon: swapfile: swapon failed: Operation not permitted
ムハンマドディアスヤスクル、

1
ルートモデルでthoswコマンドを実行することをお勧めします。`` `sudo su```
dheeraj

19

残念ながらcomposerには、大量のRAMと処理能力が必要です。ここに、私が実行したいくつかのことをまとめます。これは私のクラウドプレイペン環境にありました。

  1. RAMが不足している可能性があります。スワップを有効にしますhttps ://www.digitalocean.com/community/search?q=add+ swap (注:ベストプラクティスは別のパーティションを追加することです。Digitaloceanのガイドは環境に適しています)
  2. service mysql stop (DB / mem-hogサービスを終了して、RAMを解放します。もう一度起動することを忘れないでください!)
  3. 実行中のセカンダリターミナルセッションを使用する topプロセスが完了するまでメモリ/スワップ消費を監視します。
  4. composer.phar update --prefer-dist -vvv(詳細な出力[作業中はまだいくつかの時点でハングします]とディストリビューションのzipファイルを使用します)。たぶん--dry-runませんか?
  5. 古いバージョンのPHP(5.3xなど)では、Composerの動作が遅くなることがわかっています。5.5.9でもまだ遅いのですが...

より便利にに置き換えましtophtop
DevonDahon

スワップファイルの作成も検討してください
Hari Harker

8

余分なメモリを必要としないDigitalOceanの修正-スワップのアクティブ化、1GBの例を以下に示します。

ターミナル実行中

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1

上記のソリューションは、次の再起動まで機能します。その後、スワップを再度アクティブにする必要があります。リブート間でそれを維持するには、スワップファイルをfstabに追加します。

sudo nano /etc/fstab

上記のファイルを開き、次の行をファイルに追加します

/var/swap.1 swap swap sw 0 0

ここでサーバーを再起動します。Composerは正常に動作する必要があります。


6

vendorとcomposer.lockを実行composer self-updateしてcomposer clearcache削除し、ローカル環境を再起動して実行します。 php -d memory_limit=-1 /usr/local/bin/composer install


2

composerのメモリ制限を増やす

php -d memory_limit=4G /usr/local/bin/composer update

この変更後に再起動が必要になる場合があります


1

composer installPHP DOCKERコンテナー内で実行すると、このエラーが発生します。これはメモリの問題です。DOCKER PREFERENCESのSWAPメモリを512MBから1.5GBに増やすことで解決


それをどうやってやるの?
max4ever

Dockerデスクトップアイコンを右クリック-> [設定]-> [Rousources]
Inoubli

0

この問題は、ワイルドカードで正しく更新されないパッケージが原因で発生します。最後のバージョンを直接使用すると、最終的に機能します。

"l3 / cas-bundle": "〜1.0" -------> "l3 / cas-bundle": "1.1.13"



0

これが、Laravelフレームワークのcomposerからmaatwebsite \ excelパッケージをインストールする方法です。

  1. リモートサーバーからcomposer.jsonファイルとcomposer.lockファイルをダウンロードします。
  2. composer updateローカルコマンドプロンプトから実行します(その後、すべてのインストールプロセスが完了するまで待ちます)。
  3. composer.lockファイルをリモートサーバーにアップロードします。
  4. composer installリモートサーバーで実行します(すべてのプロセスが終了するまで待ちます)。
  5. 完了


-1

Laravel / Homestead(Vagrant Windows)で解決

  1. Homestead.yamlメモリを編集して2048から4096に増やす

  2. 浮浪者

  3. 浮浪者ssh

  4. 選択したフォルダーにこの行を使用してSymfonyをインストールします(ファイルなしである必要があります)

    COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev

-2

Composer 設定でに設定preferred-install"dist"てみてください。


この質問は、いくつかのLaravelプロジェクトのインストールについてです。あなたの答えはそれとどのように関連していますか?
Nico Haase

この質問は、パッケージのインストールについてです。具体的には、RAMに関連するパッケージのインストールに関する問題です。2年前にWPに関する情報を回答に含めたのはなぜですか?知りません。答えを更新しましたが、IMOは現在非常に関連しています。
XedinUnknown

-3

ローカルのDocker環境でこのエラーが発生しました。Dockerを再起動するだけで解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.