web-dev-qa-db-fra.com

Erreur "impossible de supprimer" avec Composer sur Vagrant

J'ai un Vagrant sous Linux et j'essaie d'installer Symfony.

Après la commande composer create-project symfony/framework-standard-edition ./ "2.5.*" j'ai l'erreur: 

[RuntimeException]
  Could not delete ./.git/objects/pack/tmp_idx_llwUKb:

Si j'essaie de mettre à jour le compositeur d'un autre projet, j'ai toujours ce genre d'erreur Could not delete

Des idées?

Edit: Pour un simple Sudo composer update -vvv sur un autre projet: 

  - Installing sonata-project/admin-bundle (dev-master 8a022aa)
Failed to download sonata-project/admin-bundle from source: Could not delete /vagrant/crm_neo/vendor/sonata-project/admin-bundle/.git/objects/pack/tmp_idx_hchQhc:
Now trying to download from dist
  - Installing sonata-project/admin-bundle (dev-master 8a022aa)

Failed: [RuntimeException] Could not delete /vagrant/crm_neo/vendor/sonata-project/admin-bundle/.git/objects/pack/tmp_idx_hchQhc:



  [RuntimeException]
  Could not delete /vagrant/crm_neo/vendor/sonata-project/admin-bundle/.git/o
  bjects/pack/tmp_idx_hchQhc:



Exception trace:
 () at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:193
 Composer\Util\Filesystem->unlink() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:151
 Composer\Util\Filesystem->removeDirectoryPhp() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:129
 Composer\Util\Filesystem->removeDirectory() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:35
 Composer\Util\Filesystem->remove() at phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php:80
 Composer\Util\Filesystem->emptyDirectory() at phar:///usr/local/bin/composer/src/Composer/Downloader/FileDownloader.php:108
 Composer\Downloader\FileDownloader->doDownload() at phar:///usr/local/bin/composer/src/Composer/Downloader/FileDownloader.php:89
 Composer\Downloader\FileDownloader->download() at phar:///usr/local/bin/composer/src/Composer/Downloader/ArchiveDownloader.php:35
 Composer\Downloader\ArchiveDownloader->download() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:201
 Composer\Downloader\DownloadManager->download() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:156
 Composer\Installer\LibraryInstaller->installCode() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:87
 Composer\Installer\LibraryInstaller->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:152
 Composer\Installer\InstallationManager->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:139
 Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:548
 Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:217
 Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php:128
 Composer\Command\UpdateCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:889
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:193
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:135
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:124
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:84
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:43
 require() at /usr/local/bin/composer:15
24
Clément Andraud

Cela m'est arrivé une fois et il s'est avéré que j'étais en retard sur le compositeur.

Vous pouvez prendre les mesures suivantes pour gagner du temps:

  1. Augmenter le délai d'attente du processus de composition (default 300) (inutile si les paramètres suivants vous aident à gagner du temps, mais ne peuvent pas nuire)
  2. Définissez dist comme type d'installation préféré.
  3. Activez le protocole https pour github, ce qui est plus rapide.

~/.composer/config.json

{
    "config": {
        "process-timeout":      600,
        "preferred-install":    "dist",
        "github-protocols":     ["https"]
    }
}

Si vous avez toujours des problèmes après cela, vous pouvez également vider le cache du compositeur:

rm -rf ~/.composer/cache
27

Juste courir 

Sudo chmod -R 777 /folder/path

Cela vous donnera un accès en écriture au dossier dans lequel vous exécutez composer . Je sais que ceci est un ancien post, mais cela fonctionne donc je dois le partager.

3
Michael Obi

J'ai eu ce problème lors de la mise en service de la machine, qui a été démarrée pour exécuter composer install. J'ai simplement quitté le VM et ai exécuté composer install sur le code de mon ordinateur hôte et cela a fonctionné.

Ainsi, si vous rencontrez ce problème lorsque vous exécutez Composer à l'intérieur de la VM , essayez simplement d'exécuter Composer de l'extérieur du VM .

Mise à jour: Comme indiqué dans les commentaires ci-dessous, cela peut poser quelques problèmes avec différentes versions de paquets en cours d'installation en raison des différences de configuration système entre les environnements local et Vagrant;.

3
aalaap

Nous rencontrons des problèmes également. Plusieurs personnes semblent avoir ce problème, aucun correctif n’a été fourni. Pour plus d'informations, vous pouvez consulter/ problèmes github de vagrant-winnfsd.

3
vokx

Je viens d'avoir le même problème.

Je vois le problème en accédant à certains fichiers locaux. Dans mon cas, le répertoire cible était sous "root" et je ne suis pas l'utilisateur root.

Solution

Modifiez les autorisations/le propriétaire de votre fichier/répertoire.
1. Redéfinir le propriétaire: 

Sudo chown myuser:myuser -R /path/to

2. Peut-être existe-t-il un manque d'autorisations pour le groupe dans lequel vous vous trouvez.
Alors, essayez de lancer: 

Sudo chmod g+rwX -R /path/to

Ou peut-être pouvez-vous exécuter votre commande avec "Sudo" si cela fonctionne pour vous (non recommandé). :)

P.S. Ne jamais utiliser 777 . Ce n'est pas sécurisé.

2
Kirby

Dans mon cas, j’essayais composer update mais j’ai eu

[RuntimeException] Impossible de supprimer .../vendor/bin/php-parse:

Bien que j'utilise le cadre Laravel, cette question était le premier lien de Google. J'ai donc décidé de poster une réponse.

Ma solution a été d’accorder la propriété pour vendor: Sudo chown -R $USER:www-data vendor/ et
Sudo chown -R $USER:www-data composer.json

0
Tarasovych

Cela a quelque chose à voir avec la synchronisation des dossiers entre les systèmes d'exploitation hôte et invité, le dossier peut simplement être temporairement verrouillé à partir de votre ordinateur hôte.

La solution consiste simplement à supprimer le dossier .git incriminé de votre système d'exploitation hôte ou à redémarrer l'ordinateur et à relancer composer install

Idéalement, chaque système d'exploitation a ses propres dépendances et différents fichiers binaires. Par conséquent, vous devez isoler votre dossier /vendor du partage de dossier rsync/vagrant. De même, vous feriez de même avec /node_modules sur un projet Nodejs.

0
MacK

Une autre chose à vérifier, Composer doit être exécuté dans le contexte d'un répertoire pour lequel il dispose d'autorisations.

Dans mon cas, j'essayais d'émettre une commande create-project à partir de/var/www, destinée à/var/www/html./var/www appartient à root,/var/www/html appartient au même utilisateur que j'ai exécuté Composer en tant que (www-data). J'ai eu l'erreur suivante; Impossible de supprimer/var/www/html /:

Émis la même commande Composer depuis/var/www/html lui-même et cela fonctionnait parfaitement.

0
Nanaki

Dans mon cas, en supprimant le plugin et en recréant la boîte, résolvez le problème.

0
Ahmad Satiri

Sur AWS, cette erreur s'est produite lors du déploiement du projet d'infrastructure Yii. 

/ var/app/current/vendor /

dossier j'ai tout supprimé à l'intérieur, il est revenu à la racine de mon document et a lancé la mise à jour du compositeur, il a récupéré tous les dépôts.

0
Swapnil Gondkar

Pour les utilisateurs Windows

Wow, je ne peux pas croire combien de temps il m'a fallu pour réaliser cela, et malheureusement, cela s'est passé plusieurs fois, et j'écris enfin cette note pour que moi et les autres puissent récupérer rapidement la prochaine fois.

  1. Utilisez simplement l'Explorateur Windows pour supprimer le dossier /vendor/whatever_project_name au lieu d'essayer de le supprimer de la ligne de commande Vagrant.

  2. Ensuite, exécutez composer update pour réinstaller les dépendances.

0
Ryan

Pour moi, c'est causé par le délai d'attente du compositeur . J'ai vérifié ma vitesse d'Internet et je l'ai trouvée réduite à 0,7 M, ce qui est presque inutilisable. Après avoir reconnecté le wifi et retrouvé la vitesse de ma connexion Internet, les erreurs ont disparu.

0
Tim Yao

Pour moi, cela a aidé à installer une (nouvelle) version via la ligne de commande à partir de la page d'accueil du téléchargement https://getcomposer.org/download/ . Je peux exclure certaines autorisations de fichier car j'étais root avec chmod + R 0777, même si j'avais un lecteur monté sur virtualbox. Quoi qu’il en soit, depuis que la nouvelle version a fonctionné, cela signifierait qu’il s’agissait d’une version ou d’exécuter une nouvelle version via php phar, et que le bac original appartenait à la racine.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
0
FantomX1