web-dev-qa-db-fra.com

Composer suspendu lors de la mise à jour des dépendances

J'ai essayé de mettre à jour un projet Laravel sur lequel je travaille aujourd'hui en utilisant composer update

Mais ça dépendait de Updating dependencies (including require-dev)

J'ai donc essayé des choses comme mettre à jour le compositeur, dump-autoload, mais rien ne semblait fonctionner. Ensuite, je l'ai exécuté en mode détaillé: composer update -vvv

Et je l'ai remarqué pendant la lecture de ce json:

Reading path/to/Composer/repo/https---packagist.org/provider-cordoval$hamcrest-php.json from cache

J'ai essayé de rechercher cordoval/hamcrest-php sur packagist.org et je ne l'ai pas trouvé. Ce n'est pas répertorié comme une dépendance dans mon composer.json

En cherchant dans mon dossier de fournisseur, je remarque que le package mockery/mockery Que j'utilise nécessite hamcrest/hamcrest-php, Mais je ne trouve rien qui fasse référence à cordoval.

Une idée de ce qui ne va pas et comment je peux le réparer pour que je puisse faire la mise à jour?

Voici mon composer.json:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*",
        "iron-io/iron_mq": "dev-master",
        "phpunit/phpunit": "4.2.*",
        "mockery/mockery": "dev-master",
        "xethron/migrations-generator": "dev-master",
        "mailgun/mailgun-php": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

Mise à jour

J'ai essayé de supprimer certains packages de mon composer.json, y compris le package "mockery/mockery". Le seul changement qu'il a fait est que Composer se bloquerait sur un fichier différent.

Après avoir quitté Composer fonctionnant comme ça pendant assez longtemps, il est finalement sorti avec une erreur telle que la suivante:

/path/to/ComposerSetup/bin/composer: line 18:  1356 Segmentation fault      php "${dir}/composer.phar" $*

Je ne sais pas trop quoi faire pour ça...

17
Chris

Il s'avère donc que le problème venait de l'extension xdebug de php. Après l'avoir désactivé dans mon php.ini, composer s'est exécuté sans aucun problème.

Et juste pour noter, le blocage ne se produisait pas réellement lors de la lecture des fichiers du cache. C'était l'étape juste après où composer essayait de résoudre les dépendances. Il n'a jamais terminé cette étape et n'a jamais imprimé la sortie. C'est pourquoi, quoi que je fasse, il semble toujours être bloqué en lecture un fichier du cache.

21
Chris

Tout d'abord: Vérifiez le pare-feu et les connexions proxy. Si tout va bien mais composer est toujours en attente, essayez de vider le cache composer:

composer clear-cache

https://getcomposer.org/doc/03-cli.md#clear-cache

2ème option Si ces étapes ne réparent pas votre composer alors il est possible que le système n'en ait pas assez RAM mémoire disponible (j'ai rencontré ce problème et les symptômes étaient les mêmes que ceux que vous décrivez). À ce stade, vous avez deux options:

a) Augmentez la mémoire (machines virtuelles ou Docker): Votre conteneur ou VM a besoin de plus de mémoire disponible. Suivez ce guide : https://stackoverflow.com/a/44533437/351805

b) Générer un fichier d'échange (Linux): Essayez de créer un fichier d'échange pour fournir plus de mémoire: (Les commandes ci-dessus sont de compositeur tué lors de la mise à jour) )

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
13
manuelbcd

Redémarrez votre système.

J'ai fait face au même problème aujourd'hui. En suivant les conseils, a désactivé xdebug, mais n'a pas aidé. Vérifié que tous les fichiers étaient présents. Redémarré mon système et cela a fonctionné.

1
Abhinav

vérifiez le chemin de [xdebug] zend_extension = "file/path" dans php.ini

0
Rejneesh Raghunath

Vérifiez si vous utilisez la version php minimale requise

Comparer avec la version php requise spécifiée dans le fichier composer.json

Ouverture du terminal

php -v

Vérification croisée dans le fichier composer.json, voir l'exemple ci-dessous

"require": { "php": "^7.1.3", }

0
Gpak