업데이트하는 동안 작성기가 종료 됨


116

문제가 발생하여 Laravel 4 프로젝트에 새 패키지를 설치하려고했습니다. 하지만 실행 php composer.phar update하면 다음과 같이 표시됩니다.

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

인터넷에서 문제를 찾았고 메모리가 문제라는 것을 알았습니다. 사용 가능한 RAM이 충분하지 않은 것 같습니다. 약 411MB의 여유 공간이 있는지 확인했습니다. 작곡가에게 실제로 더 많은 RAM이 필요합니까?

답변:


293

"Killed"메시지는 일반적으로 프로세스가 너무 많은 메모리를 소비했음을 의미하므로 가능하면 시스템에 메모리를 추가해야 할 수도 있습니다. 이 답변을 작성할 당시에는 가상 머신의 메모리를 최소 768MB로 늘려야했습니다.composer update 일부 상황에서 작업 .

그러나 라이브 서버에서이 작업을 수행하는 경우 전혀 사용하지 않아야 composer update합니다. 대신해야 할 일은 다음과 같습니다.

  1. 실행 composer update메모리 제한이 심한로 안 (예 : 직접 물리적 노트북 / 데스크탑, 또는 고정 표시기 컨테이너 / VM은 노트북 / 데스크톱에서 실행되는) 로컬 환경에서.
  2. 또는 git pushcomposer.lock 파일을 업로드 하십시오.
  3. composer install라이브 서버에서 실행 합니다.

composer install그런 다음 모든 패키지의 최신 버전을 찾는 대신 .lock 파일을 읽어 매번 정확히 동일한 버전을 가져옵니다. 이렇게하면 앱이 중단 될 가능성이 줄어들고 작곡가는 메모리를 덜 사용합니다.

자세한 내용은 https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock에서 확인하세요.

또는, 전체 업로드 할 수 있습니다 vendor실행할 필요 우회 서버에 디렉토리를 composer install모두에서,하지만 당신은 해야 실행 composer dump-autoload --optimize.


5
composer.lock을 업로드하고 composer install을 실행할 때 작동했습니다. 감사!
Ehsan

이것은 나를 위해 작동하지 않으며 composer는 apt가 설치했기 때문에 제거하고 수동으로 설치하면 모두 정상적으로 작동합니다.
rafaelphp

2
로컬 컴퓨터에서이 문제가 발생합니다.
afilina

로컬 개발을 위해서는 @Balmipor의 답변 또는 적은 양의 램이있는 다른 서버로 이동하십시오.
Shawn Pivonka

72

저처럼 메모리가 부족한 마이크로 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를 추가하는 것을 잊지 마십시오 루트로 작업하지 않으면 마십시오.

btw, 파일의 다른 위치 / 파일 이름 / 크기를 자유롭게 선택하십시오.
/var아마도 최고의 장소는 아니지만 어느 장소가 될지 모르겠고, 작은 서버가 대부분 테스트 목적으로 사용되기 때문에 거의 신경 쓰지 않습니다.


4
잊지 마세요 sudo.이 명령을 실행하려면 루트 권한을 사용해야했습니다.
MacDada

반환 swapon: swapfile: swapon failed: Operation not permitted, 왜?
Muhammad Dyas Yaskur

@Muhammad Dyas Yaskur 권한 문제가없는 경우 (루트로 작업하거나 sudo를 사용해야합니다), 구성 (OS, 드라이브 유형 등)에 다른 특정 사항이 있습니까?
Balmipour

1
루트 모델에서 thosw 명령을 실행하는 것이 가장 좋습니다. ```sudo su```
dheeraj

1
@Balmipour 저는 Laravel Homestead box를 사용합니다. * Homestead v10.12.0, v11.0.2 * Settler v9.5.1 (Ubuntu 18.04) * Settler v10.0.0 (Ubuntu 20.04) 나는 "sudo su"를했다면 감사 할 것입니다. sudo없이 작동했습니다.
Shawn Pivonka

19

불행히도 작곡가에게는 많은 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(상세한 출력 [작업 중 일부 지점에서 여전히 중단됨] 및 distro zip 파일 사용). 어쩌면 시도--dry-run 너무 ?
  5. Composer는 이전 버전의 PHP (예 : 5.3x)에서 느리게 실행되는 것으로 알고 있습니다. 5.5.9에서 여전히 느 렸습니다 ...

, 더 편리하게 대체 top했습니다 htop.
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

이제 서버를 다시 시작하십시오. 작곡가가 제대로 작동해야합니다.


6

vendor 및 composer.lock 실행 composer self-updatecomposer clearcache제거 로컬 환경을 다시 시작한 다음 실행 php -d memory_limit=-1 /usr/local/bin/composer install


2

작곡가의 메모리 제한 늘리기

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

이 변경 후 재부팅해야 할 수 있음


1

composer installPHP DOCKER 컨테이너 내부에서 실행할 때이 오류가 발생합니다. 메모리 문제입니다. DOCKER PREFERENCES의 SWAP 메모리를 512MB에서 1.5GB로 늘려 해결


그리고 어떻게하나요?
max4ever

Docker Desktop Icon-> Preferences-> Rousources
Inoubli

0

이 문제는 와일드 카드로 올바르게 업데이트되지 않는 패키지로 인해 발생하며 마지막 버전을 직접 사용하며 마침내 작동합니다.

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



0

Laravel Framework의 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

당신은 설정을 시도 할 수 있습니다 preferred-install"dist"작곡가의 설정에.


이 질문은 Laravel 프로젝트 설치에 관한 것입니다. 당신의 대답은 그것과 어떤 관련이 있습니까?
Nico Haase

이 질문은 패키지 설치에 관한 것입니다. 특히 RAM과 관련된 패키지 설치 문제에 관한 것입니다. 2 년 전 답변에 WP에 대한 정보를 포함시킨 이유는 무엇입니까? 모르겠어요. 나는 이제 IMO가 매우 관련이있는 답변을 업데이트했습니다.
XedinUnknown 2011

-3

로컬 Docker 환경에서이 오류가 발생했습니다. Docker를 다시 시작하여 해결했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.