Ошибка "не удалось удалить" с помощью 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
Ничего себе, я не могу поверить, сколько времени мне потребовалось, чтобы понять это, и, к сожалению, это произошло несколько раз, и я, наконец, пишу эту заметку, чтобы я и другие могли быстро восстановиться в следующий раз.
-
Просто используйте проводник Windows, чтобы удалить папку /vendor/whatever_project_name
вместо того, чтобы пытаться удалить ее из командной строки Vagrant.
-
Затем запустите composer update
компоновщика, чтобы переустановить зависимости.