作曲家在更新时被杀

2022-08-30 06:32:59

我遇到了一个问题,我试图在我的Laravel 4项目中安装一个新软件包。但是当我跑步时,我得到这个:php composer.phar update

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

我在互联网上寻找问题,发现内存是问题所在,我认为我没有足够的RAM可用,我已经检查了这个,我有大约411mb的可用空间。作曲家真的需要更多的RAM吗?


答案 1

“已杀死”消息通常意味着您的进程消耗了太多内存,因此,如果可能的话,您可能只需要向系统添加更多内存。在撰写此答案时,我不得不将虚拟机的内存增加到至少768MB,以便在某些情况下开始工作。composer update

但是,如果您在实时服务器上执行此操作,则根本不应该使用。相反,你应该做的是:composer update

  1. 在本地环境中运行(例如直接在物理笔记本电脑/台式机上运行,或在笔记本电脑/台式机上运行的 Docker 容器/VM),其中内存限制不应那么严重。composer update
  2. 上传或 composer.lock 文件。git push
  3. 在实时服务器上运行。composer install

composer install然后从 .lock 文件中读取,每次都获取完全相同的版本,而不是查找每个包的最新版本。这使你的应用不太可能中断,并且 Composer 使用的内存更少。

在此处阅读更多内容: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

或者,您可以将整个目录上传到服务器,从而完全不需要运行,但随后运行 。vendorcomposer installcomposer dump-autoload --optimize


答案 2

如果像我一样,您正在使用一些缺少内存的微型VM,那么创建交换文件就可以了:

#Check free memory before
free -m

mkdir -p /var/_swap_
cd /var/_swap_

#Here, 2G ~ 2GB of swap memory. Feel free to add MORE
sudo fallocate -l 2G swapfile

chmod 600 swapfile
mkswap swapfile
swapon 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

正如一些评论所指出的那样,如果您不以root身份工作,请不要忘记添加sudo

顺便说一句,请随意为文件选择另一个位置/文件名/大小。
可能不是最好的地方,但我不知道哪个地方会是,也很少在乎,因为小型服务器主要用于测试目的。/var


推荐