[rivsen@rivsen-dell-pc symfony]$ composer update -v Loading composer repositories with package information Updating dependencies - Updating kriswallsmith/assetic dev-master (deed96b => 8ca1861) Checking out 8ca1861fbed58e2c6ffcca5c0a1726c40a10a77c [RuntimeException] Failed to clone http://github.com/kriswallsmith/assetic.git via git, https and http protocols, aborting. - git://github.com/kriswallsmith/assetic.git fatal: 没有此远程 'composer' - https://github.com/kriswallsmith/assetic.git fatal: 没有此远程 'composer' - http://github.com/kriswallsmith/assetic.git fatal: 没有此远程 'composer' Exception trace: () at phar:///usr/local/bin/composer/src/Composer/Downloader/GitDownloader.php:341 Composer\Downloader\GitDownloader->throwException() at phar:///usr/local/bin/composer/src/Composer/Downloader/GitDownloader.php:291 Composer\Downloader\GitDownloader->runCommand() at phar:///usr/local/bin/composer/src/Composer/Downloader/GitDownloader.php:67 Composer\Downloader\GitDownloader->doUpdate() at phar:///usr/local/bin/composer/src/Composer/Downloader/VcsDownloader.php:91 Composer\Downloader\VcsDownloader->update() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:212 Composer\Downloader\DownloadManager->update() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:158 Composer\Installer\LibraryInstaller->updateCode() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:105 Composer\Installer\LibraryInstaller->update() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:171 Composer\Installer\InstallationManager->update() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:138 Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:460 Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:187 Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php:82 Composer\Command\UpdateCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:238 Symfony\Component\Console\Command\Command->run() 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:101 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:106 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:74 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:37 require() at /usr/local/bin/composer:15
但是我手动调用 git clone那几个地址都是可以clone的
经过翻看composer在github的issues,查到一个解决办法,因为我是从symfony官网下载的带vendor的2.1.4版本,然后解压之后就执行了 composer update 但是遇到了这个错误,github上回复说:
justin-amt commented 4 months ago
I have exactly same problem on php composer.phar update
[RuntimeException]
Failed to clone http://github.com/fabpot/Twig.git via git, https and http protocols, aborting.
- git://github.com/fabpot/Twig.git
fatal: No such remote 'composer'
- https://github.com/fabpot/Twig.git
fatal: No such remote 'composer'
- http://github.com/fabpot/Twig.git
fatal: No such remote 'composer'
How to correct it?
Seldaek commented 4 months ago
@justinamt that looks like you have an outdated vendor dir (from a very old composer.phar) just delete the vendor/* and run install or update again to get them up to date.
from https://github.com/composer/composer/...
于是我mv了vendor文件夹,然后执行 composer install 发现可以正常下载了。
如果你手工删除过包并自己手动clone,之后再用 composer update 命令来更新的话,也是会报这样的错误的。
在运行 composer update 命令的时候添加 -vvv 参数,可以看到更详细的输出结果,如:
- Installing xxx/xxx (dev-master f53e70e)
Cloning f53e70e2d62fbf6f83916f7aff0ea735978f8634
Executing command (CWD): git clone --no-checkout 'http://xxx.com/namespace/xxx.git' '/Users/david/Work/git/project/xxx.com/vendor/namespace/xxx' && cd '/Users/david/Work/git/project/xxx.com/vendor/namespace/xxx' && git remote add composer 'http://xxx.com/namespace/xxx.git' && git fetch composer
Executing command (/Users/david/Work/git/project/xxx.com/vendor/namespace/xxx): git branch -r
Executing command (/Users/david/Work/git/project/xxx.com/vendor/namespace/xxx): git checkout 'master'
Executing command (/Users/david/Work/git/project/xxx.com/vendor/namespace/xxx): git reset --hard 'f53e70e2d62fbf6f83916f7aff0ea735978f8634'
可以看到,composer 会再设置一个远程管理仓库,如果是自己手工 clone,那么就会少了这一步操作,当然会报错了,所以,若是要自己手工 clone 某个仓库的代码, clone 后进入代码目录,多加一步操作即可:
git remote add composer ${repo_url}