Besteci güncelleme sırasında öldürüldü


118

Bir sorun yaşadım, Laravel 4 projeme yeni bir paket kurmaya çalıştım. Ama koştuğumda şunu anlıyorum php composer.phar update:

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

Sorunu internette aradım ve sorunun hafızada olduğunu gördüm, yeterli RAM'im olmadığını düşünüyorum, bunu kontrol ettim, yaklaşık 411mb boş var. Bestecinin gerçekten daha fazla RAM'e ihtiyacı var mı?

Yanıtlar:


297

"Öldürüldü" mesajı genellikle işleminizin çok fazla bellek tükettiği anlamına gelir, bu nedenle mümkünse sisteminize daha fazla bellek eklemeniz gerekebilir. Bu cevabı yazarken composer update, bazı durumlarda işe koyulmak için sanal makinemin belleğini en az 768 MB'a çıkarmak zorunda kaldım .

Ancak, bunu canlı bir sunucuda yapıyorsanız, hiç kullanmamalısınız composer update. Bunun yerine yapmanız gereken şudur:

  1. Run composer updatebellek sınırlamaları şiddetli olarak olmamalıdır (örneğin doğrudan fiziksel dizüstü / masaüstü ya da bir liman işçisi kap üzerine / VM dizüstü bilgisayarınızda / masaüstü üzerinde çalışan olarak) yerel bir ortamda.
  2. Yükleme veya git pushcomposer.lock dosyası.
  3. composer installCanlı sunucuda çalıştırın .

composer installher paketin en son sürümlerini bulmak yerine her seferinde aynı sürümleri getirerek .lock dosyasından okuyacaktır. Bu, uygulamanızın bozulma olasılığını azaltır ve besteci daha az bellek kullanır.

Daha fazlasını buradan okuyun: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

Alternatif olarak, tüm yükleyebilir vendorçalıştırmak için ihtiyaç atlayarak, sunucuya dizini composer installhiç, ama o zaman gerektiğini çalıştırın composer dump-autoload --optimize.


5
Composer.lock'u yüklediğimde ve composer yüklemesini çalıştırdığımda çalıştı. Teşekkürler!
Ehsan

Bu benim için çalışmıyor, besteci apt tarafından yükleyiciydi, bu yüzden onu kaldırıyorum ve manuel olarak kuruyorum, sonra hepsi iyi çalışıyor.
rafaelphp

2
Bu sorunu yerel bir makinede yaşıyorum.
afilina

Yerel geliştirme için mutlaka @ Balmipor's Answer veya az miktarda ram içeren başka bir sunucu ile gidin.
Shawn Pivonka

73

Benim gibi, hafızası olmayan bir mikro sanal makine kullanıyorsanız, bir takas dosyası oluşturmak işe yarar:

#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

Birkaç yorumun da işaret ettiği gibi, root olarak çalışmıyorsanız sudo eklemeyi unutmayın .

btw, dosya için başka bir konum / dosya adı / boyut seçmekten çekinmeyin.
/varmuhtemelen en iyi yer değil, ancak neresi olacağını bilmiyorum ve küçük sunucular çoğunlukla test amaçlı kullanıldığından nadiren umursuyorum.


4
Unutma sudo- Bu komutları çalıştırmak için kök ayrıcalıklarını kullanmam gerekiyordu.
MacDada

dönüş swapon: swapfile: swapon failed: Operation not permitted, neden?
Muhammad Dyas Yaskur

@Muhammad Dyas Yaskur İzin sorununuz yoksa (root olarak çalıştığınızdan veya sudo kullandığınızdan emin olun), yapılandırmanızda başka özel bir şeyiniz var mı (İşletim Sistemi, sürücü türü, vb.)?
Balmipour

1
Bu komutları kök modelde çalıştırmak en iyisidir. `` sudo su``
dheeraj

1
@Balmipour Laravel Homestead kutusunu kullanıyorum * Homestead v10.12.0, v11.0.2 * Settler v9.5.1 (Ubuntu 18.04) * Settler v10.0.0 (Ubuntu 20.04) "sudo su" yapmış olsaydım buna teşekkür ederdim sudo olmadan çalıştı.
Shawn Pivonka

19

Ne yazık ki besteci çok fazla RAM ve işlem gücü gerektirir. İşte yaptığım ve bir araya getirerek süreci katlanılabilir kılan birkaç şey. Bu benim bulut oyun parkı ortamımdaydı.

  1. Sadece RAM'iniz bitiyor olabilir. Değiştirmeyi etkinleştirin: https://www.digitalocean.com/community/search?q=add+swap (not: En iyi uygulamanın ayrı bir bölüm eklemek olduğunu düşünüyorum. Digitalocean'ın kılavuzu ortamları için uygundur)
  2. service mysql stop (Biraz RAM boşaltmak için DB / mem-hog servislerinizi kapatın - yeniden başlatmayı unutmayın!)
  3. topişlem tamamlanana kadar bellek / takas tüketimini izlemek için çalışan ikincil bir terminal oturumu kullanın .
  4. composer.phar update --prefer-dist -vvv(ayrıntılı çıktı [çalışırken bazı noktalarda takılır] ve distro zip dosyalarını kullanın). Belki bir de dene --dry-run?
  5. Composer'ın eski PHP sürümlerinde (örn. 5.3x) daha yavaş çalıştığı biliniyor. 5.5.9'da benim için hala yavaştı ...

Ben yerini toptarafından htopdaha uygun.
DevonDahon

Ayrıca takas dosyası oluşturmaya da bakın
Hari Harker

8

Ekstra bellek gerektirmeyen DigitalOcean düzeltmesi - takasın etkinleştirilmesi, işte 1 gb için bir örnek:

aşağıda terminal koşusunda

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

Yukarıdaki çözüm bir sonraki yeniden başlatmaya kadar çalışacaktır, bundan sonra takasın yeniden etkinleştirilmesi gerekecektir. Yeniden başlatmalar arasında kalıcı olmak için takas dosyasını fstab'a ekleyin:

sudo nano /etc/fstab

yukarıdaki dosyayı aç dosyaya aşağıdaki satırı ekle

/var/swap.1 swap swap sw 0 0

şimdi sunucuyu yeniden başlatın. Besteci iyi çalışır gerektirir.


6

Satıcıyı ve composer.lock'u çalıştırın composer self-updateve composer clearcachekaldırın. Yerel ortamınızı yeniden başlatın ve ardından çalıştırın php -d memory_limit=-1 /usr/local/bin/composer install


2

composer installPHP DOCKER kapsayıcımın içinde koştuğumda bu hatayı aldım , Bu bir bellek sorunu. DOCKER TERCİHLERİ'ndeki SWAP belleğinin 512 MB'tan 1,5 GB'a çıkarılmasıyla çözüldü


Ve o şeyi nasıl yapıyorsun ?
max4ever

Docker Masaüstü Simgesine sağ tıklayın -> Tercihler -> Rousources
Inoubli

2

Besteci için bellek sınırını artırın

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

Bu değişiklikten sonra yeniden başlatmanız gerekebilir


0

Joker karakterlerle doğru şekilde güncellenmeyen bir paketten kaynaklanan bu sorunu alıyorum, doğrudan son sürümü kullanıyorum ve sonunda çalışıyor.

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



0

Composer'dan maatwebsite \ excel paketini Laravel Framework'te kurmayı nasıl başardım:

  1. Ben karşıdan composer.json dosyası ve composer.lock benim uzak sunucudan dosya.
  2. composer updateYerel komut isteminden çalıştırıyorum (ardından tüm yükleme işlemi bitene kadar bekliyorum).
  3. Composer.lock dosyasını uzak sunucuya yükleyin .
  4. composer installuzak sunucuda çalıştırın (ardından tüm işlem bitene kadar bekleyin).
  5. YAPILDI

-1

php -d memory_limit = 5G composer.phar güncellemesi


Lütfen başkalarının ondan öğrenebileceği şekilde kodunuza bazı açıklamalar ekleyin
Nico Haase

-1

Laravel / Homestead (Vagrant Windows) üzerinde çözüldü

  1. Düzenleme Homestead.yaml2048 den 4096 ve artış bellek

  2. serseri

  3. serseri ssh

  4. Symfony'yi bu satırla seçtiğiniz klasöre yükleyin (dosyasız olmalıdır)

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

-2

Ayarı deneyebilirsiniz preferred-installiçin "dist"Besteci config.


Bu soru, bazı Laravel projelerinin kurulması ile ilgili. Cevabınız bununla nasıl bağlantılı?
Nico Haase

Bu soru, bir paket kurmakla ilgilidir. Özellikle, RAM ile ilgili bir paketin kurulmasıyla ilgili problemlerle ilgilidir. Neden 2 yıl önceki yanıta WP hakkında bilgi ekledim? Bilmiyorum. Şimdi, IMO'nun şimdi çok alakalı olduğu cevabı güncelledim.
XedinUnknown

-3

Bu hatayı yerel bir Docker ortamında alıyordum. Docker'ı yeniden başlatarak çözdüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.