Ошибка "не удалось удалить" с помощью Composer on Vagrant

У меня есть Vagrant под управлением Linux, и я пытаюсь установить Symfony.

После команды composer create-project symfony/framework-standard-edition./"2.5.*" меня есть ошибка:

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

Если я попытаюсь добавить новый проект, я всегда получаю такую ошибку. Could not delete

Есть идеи?

Изменение: для простого sudo composer update -vvv в другом проекте:

  - 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

Ответы

Ответ 1

Случилось это однажды, и оказалось, что я поразил время ожидания композитора.

Для достижения некоторой скорости вы можете принять следующие меры:

  • Увеличение времени выполнения композитора (по умолчанию 300) (на самом деле не требуется, если следующие настройки помогут вам увеличить скорость, но не могут пострадать)
  • Установите dist как предпочтительный тип установки.
  • Включить протокол https для github, который быстрее.

~/.composer/config.json

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

Если у вас все еще есть проблемы после этого, вы также можете очистить кеш композитора:

rm -rf ~/.composer/cache

Ответ 2

Просто запустите

sudo chmod -R 777 /folder/path

Это даст вам право на запись в папку, в которой вы работаете. Я знаю, что это старый пост, но это работает, поэтому я должен поделиться им.

Ответ 3

Мы также сталкиваемся с проблемами. Есть несколько человек, у которых, похоже, есть эта проблема, исправление не было предоставлено. Для получения дополнительной информации вы можете посмотреть github issues vagrant-winnfsd.

Ответ 4

У меня возникла эта проблема при подготовке машины, которая была загружена для запуска composer install. Я просто вышел из VM и запустил composer install в коде на моей главной машине, и он сработал.

Итак, если вы столкнулись с этой проблемой при запуске Composer внутри виртуальной машины, попробуйте запустить Composer извне VM.

Обновление. Как указано в комментариях ниже, это может создавать проблемы с различными версиями устанавливаемых пакетов из-за различий в конфигурациях системы между локальной и виртуальной средой, поэтому при этом старайтесь проявлять осторожность.

Ответ 5

Только что получил ту же проблему.

Я вижу проблему с доступом к некоторым локальным файлам. В моем случае целевой каталог находился под "root", и я не являюсь пользователем root.

Решение

Изменение прав доступа/владельца файлов/каталога.
1. Переопределить владельца:

sudo chown myuser:myuser -R /path/to

2. Возможно, есть некоторая нехватка разрешений для группы, в которой вы находитесь.
Итак, попробуйте запустить:

sudo chmod g+rwX -R /path/to

Или, может быть, вы можете запустить свою команду с помощью "sudo", если она работает для вас (не рекомендуется).:)

P.S. Никогда не используйте 777. Это не безопасно.

Ответ 6

В AWS я получил эту ошибку при развертывании рамочного проекта Yii, это было

/вар/приложение/ток/продавец/

Папка

я удалил все, что внутри, вернулось к моему корню документа и запустило обновление для композитора, и оно снова загрузило все репозитории.

Ответ 7

В моем случае, удалив плагин и заново создав ящик, решите проблему.

Ответ 8

Для меня это вызвано временем ожидания композитора. Я проверил скорость интернет-скорости и обнаружил, что она упала до 0,7 М, что почти непригодно. После того, как я подключил Wi-Fi и вернул скорость подключения к Интернету, ошибки исчезли.

Ответ 9

Это что-то связано с синхронизацией папок между хост-и гостевой ОС, папка может быть просто временно заблокирована с вашего хост-компьютера.

Решение состоит в том, чтобы просто удалить .git папку .git из вашей операционной системы или перезагрузить компьютер и снова запустить программу composer install.

В идеале каждая ОС имеет свои собственные зависимости и разные двоичные файлы, поэтому вы должны изолировать вашу папку /vendor от общего ресурса папки rsync/vagrant, также вы будете делать то же самое с /node_modules в проекте Nodejs.

Ответ 10

В моем случае я пытался composer update но я получил

[RuntimeException] Не удалось удалить... /vendor/bin/php-parse:

Несмотря на то, что я использую фреймворк Laravel, этот вопрос был первой ссылкой в Google, поэтому я решил опубликовать ответ.

Мое решение состояло в том, чтобы предоставить право собственности для vendor: sudo chown -R $USER:www-data vendor/ и
sudo chown -R $USER:www-data composer.json

Ответ 11

Еще одна вещь, которую нужно проверить, Composer должен работать в контексте каталога, к которому у него есть разрешения.

В моем случае я пытался выполнить команду create-project из /var/www, направленную против /var/www/html./var/www принадлежит пользователю root,/var/www/html принадлежит тому же пользователю, с которым я выполнил Composer (www-data). Я получил следующую ошибку; Не удалось удалить /var/www/html/:

Выполнил ту же команду Composer из самого /var/www/html, и она отлично работала.

Ответ 12

Для меня это помогло установить (новую) версию через командную строку с домашней страницы загрузки https://getcomposer.org/download/. Я могу исключить некоторые права доступа к файлам, так как я был root с помощью chmod +R 0777, хотя у меня был смонтированный диск на виртуальной коробке. В любом случае, так как новая версия работала, это означало бы, что это версия или запущена новая версия через php phar, а оригинальный бен принадлежал root

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');"

Ответ 13

Для пользователей Windows

Ничего себе, я не могу поверить, сколько времени мне потребовалось, чтобы понять это, и, к сожалению, это произошло несколько раз, и я, наконец, пишу эту заметку, чтобы я и другие могли быстро восстановиться в следующий раз.

  1. Просто используйте проводник Windows, чтобы удалить папку /vendor/whatever_project_name вместо того, чтобы пытаться удалить ее из командной строки Vagrant.

  2. Затем запустите composer update компоновщика, чтобы переустановить зависимости.