laravel/lumen-installer 安装失败:guzzlehttp/guzzle 锁定在 6.3.0

Installation failed for laravel/lumen-installer: guzzlehttp/guzzle locked at 6.3.0

我正在尝试通过命令 composer global require "laravel/lumen-installer" 安装 Lumen,但在终端上抛出以下错误。

Changed current directory to /home/lykos/.config/composer
Using version ^1.0 for laravel/lumen-installer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install laravel/lumen-installer v1.0.2
    - Conclusion: don't install laravel/lumen-installer v1.0.1
    - Installation request for symfony/console (locked at v4.0.3) -> satisfiable by symfony/console[v4.0.3].
    - Conclusion: remove guzzlehttp/guzzle 6.3.0
    - Installation request for laravel/lumen-installer ^1.0 -> satisfiable by laravel/lumen-installer[v1.0.0, v1.0.1, v1.0.2].
    - Conclusion: don't install guzzlehttp/guzzle 6.3.0
    - laravel/lumen-installer v1.0.0 requires guzzlehttp/guzzle ~4.0|~5.0 -> satisfiable by guzzlehttp/guzzle[4.0.0, 4.0.1, 4.0.2, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.1.6, 4.1.7, 4.1.8, 4.2.0, 4.2.1, 4.2.2, 4.2.3, 4.2.4, 5.0.0, 5.0.1, 5.0.2, 5.0.3, 5.1.0, 5.2.0, 5.3.0, 5.3.1, 5.3.2].
    - Can only install one of: guzzlehttp/guzzle[4.0.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.0.1, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.0.2, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.1, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.2, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.3, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.4, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.5, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.6, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.7, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.1.8, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.2.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.2.1, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.2.2, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.2.3, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[4.2.4, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.0.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.0.1, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.0.2, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.0.3, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.1.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.2.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.0, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.1, 6.3.0].
    - Can only install one of: guzzlehttp/guzzle[5.3.2, 6.3.0].
    - Installation request for guzzlehttp/guzzle (locked at 6.3.0) -> satisfiable by guzzlehttp/guzzle[6.3.0].


Installation failed, reverting ./composer.json to its original content.

通过 google 搜索,我尝试这样做 rm -R ~/.composer/vendor/guzzlehttp

但由于没有这样的目录而抛出错误

rm: cannot remove '/home/lykos/.composer/vendor/guzzlehttp': No such file or directory

我的 ~/.config/composer/composer.json 文件看起来像这样

{
    "require": {
        "laravel/installer": "^1.5"
    }
}

有解决此问题的想法吗?

您应该使用 composer clearcache 然后 运行

清除缓存
composer global require "laravel/lumen-installer"

这主要是因为作曲家缓存了一些包并尝试从缓存中安装所需的包。

尝试使用 composer create-project --prefer-dist laravel/lumen project

安装

希望对您有所帮助。

Taylor 在 v1.0.3 中修复了此问题,但尚未标记,因此您可以安装 dev-master 以获取更新版本: composer global require laravel/lumen-installer:dev-master

尝试删除全局 ~/.composer 目录。首先安装 lumen/installer,然后安装 laravel/installer 全局。适合我。

我今天遇到了同样的问题,它是由其他一些全局必需的包引起的,请检查~/.composer/composer.json。在我的例子中,laravel/install 2.0.1 需要 guzzle 6.0.0,而旧的 lumen/install 需要 guzzle 5.3.2,但 Composer 只能安装一个版本。通过删除该目录中的 lumen 行和 运行 作曲家更新解决了问题。

laravel/lumen-installer v1.0.0 requires guzzlehttp/guzzle ~4.0|~5.0

Installation request for guzzlehttp/guzzle (locked at 6.3.0)

这意味着 guzzlehttp/guzzle 根据您的 composer.lock 文件锁定在 6.3.0",并且您的包裹 (laravel/lumen-installer) 需要 guzzlehttp/guzzle ~4.0|~5.0。检查一下通过 grep 6.3.0 ~/.composer/composer.lock 命令。

因此您需要根据建议从 ~/.composer/composer.json 中删除 guzzlehttp/guzzle

Conclusion: remove guzzlehttp/guzzle 6.3.0

否则,如果它不存在,您需要删除依赖它的包,或将 laravel/lumen-installer 升级到 v1.0.3(如已建议的那样)。例如

composer global require laravel/lumen-installer:^1.0.3

要查看依赖关系树(使用不同版本的 guzzle),您可以 运行:

composer global show -t

另请参阅:How to resolve a "Can only install one of:" conflict?