Komponist beim Update getötet


113

Ich habe ein Problem und habe versucht, ein neues Paket für mein Laravel 4-Projekt zu installieren. Aber wenn ich renne, php composer.phar updatebekomme ich folgendes:

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

Ich habe im Internet nach dem Problem gesucht und festgestellt, dass der Speicher das Problem ist. Ich glaube, ich habe nicht genügend RAM zur Verfügung. Ich habe dies überprüft. Ich habe ungefähr 411 MB frei. Braucht der Komponist wirklich mehr RAM?

Antworten:


289

Die Meldung "Getötet" bedeutet normalerweise, dass Ihr Prozess zu viel Speicher verbraucht hat. Daher müssen Sie Ihrem System möglicherweise nach Möglichkeit einfach mehr Speicher hinzufügen. Zum Zeitpunkt des Schreibens dieser Antwort musste ich den Speicher meiner virtuellen Maschine auf mindestens 768 MB erhöhen, um composer updatein bestimmten Situationen arbeiten zu können.

Wenn Sie dies jedoch auf einem Live-Server tun, sollten Sie es überhaupt nicht verwenden composer update. Was Sie stattdessen tun sollten, ist:

  1. Führen Sie es composer updatein einer lokalen Umgebung aus (z. B. direkt auf Ihrem physischen Laptop / Desktop oder einem Docker-Container / einer Docker-VM, die auf Ihrem Laptop / Desktop ausgeführt wird), in der die Speicherbeschränkungen nicht so schwerwiegend sein sollten.
  2. Laden Sie git pushdie Datei composer.lock hoch.
  3. Führen Sie composer installauf dem Live - Server.

composer installwird dann aus der .lock-Datei lesen und jedes Mal genau die gleichen Versionen abrufen, anstatt die neuesten Versionen jedes Pakets zu finden. Dadurch wird die Wahrscheinlichkeit verringert, dass Ihre App beschädigt wird, und der Komponist benötigt weniger Speicher.

Lesen Sie hier mehr: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

Alternativ können Sie das gesamte vendorVerzeichnis auf den Server hochladen composer install, ohne dass es ausgeführt werden muss composer dump-autoload --optimize. Dann sollten Sie es ausführen .


5
Als ich composer.lock hochgeladen und die Composer-Installation ausgeführt habe, hat es funktioniert. Vielen Dank!
Ehsan

Dies funktioniert bei mir nicht, Composer wurde von apt installiert, also entferne ich es und installiere es manuell, dann funktionieren alle einwandfrei.
Rafaelphp

2
Ich habe dieses Problem auf einem lokalen Computer.
Afilina

69

Wenn Sie wie ich eine Mikro-VM ohne Arbeitsspeicher verwenden, reicht das Erstellen einer Auslagerungsdatei aus:

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m

Übrigens können Sie auch einen anderen Speicherort / Dateinamen / eine andere Größe für die Datei auswählen.
/varist wahrscheinlich nicht der beste Ort, aber ich weiß nicht, welcher Ort sein würde, und es ist mir egal, da winzige Server meistens zu Testzwecken verwendet werden.


3
Vergessen Sie nicht sudo- ich musste Root-Rechte verwenden, um diese Befehle auszuführen.
MacDada

zurück swapon: swapfile: swapon failed: Operation not permitted, warum?
Muhammad Dyas Yaskur

@ Muhammad Dyas Yaskur Wenn Sie kein Berechtigungsproblem haben (stellen Sie sicher, dass Sie entweder als Root arbeiten oder sudo verwenden), haben Sie noch etwas Besonderes in Ihrer Konfiguration (Betriebssystem, Laufwerkstyp usw.)?
Balmipour

@ Balmipour Ich habe bereits als Root verwendet, aber immer noch nicht zugelassen, mein Betriebssystem ist 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
Muhammad Dyas Yaskur

Nachdem ich recherchiert habe, wird es von meinem VPS verursacht, unix.stackexchange.com/questions/2893/…
Muhammad Dyas Yaskur

19

Leider benötigt der Komponist viel RAM und Rechenleistung. Hier sind einige Dinge, die ich getan habe und die zusammen den Prozess erträglich gemacht haben. Dies war auf meinem Cloud-Laufstall env.

  1. Möglicherweise geht Ihnen einfach der Arbeitsspeicher aus. Swap aktivieren: https://www.digitalocean.com/community/search?q=add+swap (Hinweis: Ich denke, es wird empfohlen, eine separate Partition hinzuzufügen. Der Leitfaden von Digitalocean ist für die jeweilige Umgebung geeignet.)
  2. service mysql stop (Beenden Sie Ihre DB / mem-hog-Dienste, um RAM freizugeben - vergessen Sie nicht, ihn erneut zu starten!)
  3. Verwenden Sie eine sekundäre Terminalsitzung top, um den Speicher- / Auslagerungsverbrauch zu überwachen, bis der Vorgang abgeschlossen ist.
  4. composer.phar update --prefer-dist -vvv(ausführliche Ausgabe [hängt an einigen Stellen beim Arbeiten noch ab] und Verwendung von Distribution-Zip-Dateien). Vielleicht versuchen Sie es --dry-runauch?
  5. Es ist anscheinend bekannt, dass Composer in älteren PHP-Versionen (z. B. 5.3x) langsamer läuft. In 5.5.9 war es für mich immer noch langsam ...

Ich ersetzte topdurch htop, bequemer.
DevonDahon

Schauen Sie sich auch die Erstellung einer Auslagerungsdatei an
Hari Harker

8

DigitalOcean-Fix, der keinen zusätzlichen Speicher benötigt - Swap aktivieren, hier ein Beispiel für 1 GB:

im Terminal unten laufen

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

Die obige Lösung funktioniert bis zum nächsten Neustart, danach müsste der Swap reaktiviert werden. Um es zwischen den Neustarts beizubehalten, fügen Sie die Auslagerungsdatei zu fstab hinzu:

sudo nano /etc/fstab

Öffnen Sie die obige Datei und fügen Sie der Datei die folgende Zeile hinzu

/var/swap.1 swap swap sw 0 0

Starten Sie nun den Server neu. Composer erfordern funktioniert gut.


6

Führen Sie Vendor und Composer.lock aus composer self-updateund composer clearcacheentfernen Sie es. Starten Sie Ihre lokale Umgebung neu und führen Sie sie aus php -d memory_limit=-1 /usr/local/bin/composer install


2

Erhöhen Sie das Speicherlimit für Composer

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

Möglicherweise muss nach dieser Änderung ein Neustart durchgeführt werden


1

Ich habe diesen Fehler erhalten, als ich composer installin meinem PHP DOCKER-Container lief. Es ist ein Speicherproblem. Gelöst durch Erhöhen des SWAP-Speichers in DOCKER PREFERENCES von 512 MB auf 1,5 GB


und wie machst du das
max4ever

Klicken Sie mit der rechten Maustaste auf das Docker Desktop-Symbol
Inoubli

0

Ich bekomme dieses Problem für ein Paket verursacht, das nicht richtig mit Platzhaltern aktualisiert wird. Ich verwende direkt die letzte Version und es funktioniert schließlich.

l3 / cas-bundle: ~ 1.0 -------> l3 / cas-bundle: 1.1.13



0

So gelang es mir, das Paket maatwebsite \ excel von Composer in Laravel Framework zu installieren:

  1. Ich lade die Dateien composer.json und composer.lock von meinem Remote-Server herunter .
  2. Ich starte composer updatean der lokalen Eingabeaufforderung (und warte, bis der gesamte Installationsvorgang abgeschlossen ist).
  3. Laden Sie die Datei composer.lock auf den Remote-Server hoch.
  4. composer installauf einem Remote-Server ausführen (dann warten, bis der gesamte Prozess abgeschlossen ist).
  5. GETAN


-1

Gelöst auf Laravel / Homestead (Vagrant Windows)

  1. Bearbeiten Homestead.yamlund erhöhen Sie den Speicher von 2048 auf 4096

  2. Landstreicher

  3. Vagabund ssh

  4. Installieren Sie Symfony mit dieser Zeile in dem von Ihnen ausgewählten Ordner (muss ohne Dateien sein).

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

-2

Sie können Einstellung versuchen preferred-installzu "dist"in Composer - Konfig.


Bei dieser Frage geht es um die Installation eines Laravel-Projekts. Wie hängt Ihre Antwort damit zusammen?
Nico Haase

Bei dieser Frage geht es um die Installation eines Pakets. Insbesondere geht es um Probleme bei der Installation eines Pakets, die sich auf den Arbeitsspeicher beziehen. Warum habe ich vor 2 Jahren Informationen über WP in die Antwort aufgenommen? Ich weiß es nicht. Ich habe jetzt die Antwort aktualisiert, die IMO jetzt sehr relevant ist.
XedinUnknown

-3

Ich habe diesen Fehler in einer lokalen Docker-Umgebung erhalten. Ich habe es gelöst, indem ich Docker einfach neu gestartet habe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.