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?

user3038158
quelle

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 .

Andreas
quelle
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.

Balmipour
quelle
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 ...
Alirobe
quelle
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.

Hemamalini
quelle
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

Farnoosh
quelle
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

GiorgosK
quelle
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

Inoubli
quelle
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

Juananruiz
quelle
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
Tito Panji
quelle
-1

php -d memory_limit = 5G composer.phar update

Ali Özyıldırım
quelle
Bitte fügen Sie Ihrem Code einige Erklärungen hinzu, damit andere daraus lernen können
Nico Haase
-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
davidjimenez75
quelle
-2

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

XedinUnbekannt
quelle
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.

Loopy
quelle