it-swarm.com.ru

composer убит при обновлении

У меня проблема, я попытался установить новый пакет в мой проект laravel 4. Но когда я запускаю php composer.phar update, я получаю это:

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

Я искал проблему в Интернете и увидел, что проблема с памятью, я думаю, что у меня недостаточно RAM, я проверил это, у меня есть около 411 Мб свободного места. composer действительно нужно больше оперативной памяти? Может кто-то помочь мне, пожалуйста?

Спасибо

71
user3038158

Сообщение «Killed» обычно означает, что ваш процесс потребляет слишком много памяти, поэтому вам, возможно, просто нужно добавить больше памяти в вашу систему. На момент написания этого ответа мне пришлось увеличить объем памяти моей виртуальной машины по крайней мере до 768 МБ, чтобы в некоторых ситуациях работал composer update.

Однако, если вы делаете это на работающем сервере, вам вообще не следует использовать composer update. Вместо этого вам следует сделать следующее:

  1. Запустите composer update в локальной среде (либо на вашей локальной физической машине, либо на виртуальной машине разработки)
  2. Загрузите или git Push файл composer.lock
  3. Запустите composer install на живом сервере

Затем composer install будет читать из файла .lock, каждый раз выбирая одни и те же версии, а не находя последние версии каждого пакета. Это снижает вероятность поломки вашего приложения, а композитор использует меньше памяти.

Подробнее читайте здесь: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

166
Andreas

Если, как и я, вы используете какой-то микро VM нехватку памяти, создание файла подкачки делает свое дело:

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

кстати, не стесняйтесь выбрать другое местоположение/имя файла/размер для файла.
/var, вероятно, не самое лучшее место, но я не знаю, какое это было бы место, и меня это мало заботит, поскольку крошечные серверы в основном используются для тестирования.

34
Balmipour

Это потому, что вашему хостингу не хватает памяти, пожалуйста, проверьте этот учебник 

10
ivan.proskuryakov

Композитор, к сожалению, требует много RAM и вычислительной мощности. Вот несколько вещей, которые я сделал, которые в совокупности сделали процесс терпимым. Это было на моем облачном манеже env.

  1. Возможно, вам просто не хватает оперативной памяти. Включите обмен: https://www.digitalocean.com/community/search?query=how+to+add+swap (примечание. Я думаю, что рекомендуется добавлять отдельный раздел. Руководство Digitalocean подходит для их использования. среда)
  2. service mysql stop (убейте ваши службы DB/mem-hog, чтобы освободить RAM - не забудьте запустить его снова!) 
  3. используйте сеанс вторичного терминала, на котором выполняется top, для наблюдения за потреблением памяти/подкачки до завершения процесса.
  4. composer.phar update --prefer-dist -vvv (подробный вывод [все еще зависает при работе) и использует дистрибутив Zip файлы). Может быть, попробовать --dry-run тоже? 
  5. Очевидно, что Composer работает медленнее в старых версиях PHP (например, 5.3x). Это было все еще медленно в 5.5.9 для меня ...
8
alirobe

Вы можете попробовать что-то вроде этого 

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

Исправление DigitalOcean, которое не требует дополнительной памяти - активация подкачки, вот пример для 1 ГБ:

в терминале бегите ниже

/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

теперь перезапустите сервер. Композитор требует работает отлично.

1
Hemamalini

Вы можете попробовать установить preferred-install в "dist" в конфигурации Composer CLI WP - обычно это ~/.wp-cli/packages/composer.json.

0
XedinUnknown