如何解决作曲家需求冲突?
How to resolve composer requirements conflicts?
我正在测试 Laravel Framework 新的 5.1 版本。
我想安装著名的 barryvdh/laravel-ide-helper
包。
A知道问题是:barryvdh/laravel-ide-helper
require illuminate/filesystem: 5.0.x
and laravel/framework
require illuminate/filesystem: 5.1.x
.
如何配置我的 composer.json
文件?
注意:我的 composer.json 文件中有 "minimum-stability": "dev"
和 "prefer-stable": true
。
安装时,出现此错误:
Problem 1
- Conclusion: remove laravel/framework 5.1.x-dev
- barryvdh/laravel-ide-helper 2.0.x-dev requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.0 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.1 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.2 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.3 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- don't install illuminate/filesystem 5.0.x-dev|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.0|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.22|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.25|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.26|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.28|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.4|don't install laravel/framework 5.1.x-dev
- Installation request for laravel/framework 5.1.* -> satisfiable by laravel/framework[5.1.x-dev].
- Installation request for barryvdh/laravel-ide-helper ^2.0@dev -> satisfiable by barryvdh/laravel-ide-helper[2.0.x-dev, v2.0.0, v2.0.1, v2.0.2, v2.0.3].
我已经尝试了以下所有命令,结果相同...
$ composer require barryvdh/laravel-ide-helper,
$ composer require barryvdh/laravel-ide-helper:@dev --dev
$ composer require barryvdh/laravel-ide-helper --dev --update-with-dependencies
我也尝试在 composer.json
文件上创建一个别名:
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
然后出现这个错误:
Problem 1
- Installation request for barryvdh/laravel-ide-helper dev-master -> satisfiable by barryvdh/laravel-ide-helper[dev-master].
- Conclusion: remove laravel/framework 5.1.x-dev
- Conclusion: don't install laravel/framework 5.1.x-dev
- barryvdh/laravel-ide-helper dev-master requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, 5.0.28].
- don't install illuminate/filesystem 5.0.x-dev|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem 5.0.28|don't install laravel/framework 5.1.x-dev
- Installation request for laravel/framework 5.1.* -> satisfiable by laravel/framework[5.1.x-dev].
这是我的 composer.json
文件:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"Portal\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev",
"prefer-stable": true
}
核心问题源于对 5.0.x
的过度限制版本约束。我不知道这是否有充分的理由。
一个选择是将 laravel-ide-helper
分叉到您自己的仓库中,将版本限制更改为 ^5.0
之类的内容(也许还有包名称),然后将您的分叉仓库添加为 git 存储库在您的 composer.json
文件中。这至少可以让您看到它是否按预期工作。
正如您所指出的,问题是您安装了 Laravel 5.1(顺便说一句,它仍然不稳定,我不建议使用它 atm)并且该软件包需要 5.0.*.
有几种解决方案:
- 在 laravel ide 帮助库中创建一个问题,要求作者放宽版本限制。请注意,此库与版本密切相关,这可能是版本限制如此严格的原因。
- 不要安装不稳定的5.1版本,而是坚持使用5.0,等5.1发布和更新包时使用。
我已经用 composer.json
文件中的一个别名解决了问题:
"require": {
"laravel/framework": "5.1.x-dev as 5.0.28"
},
所以,laravel/framework 有 "illuminate/filesystem": "5.1.x-dev"
而 barryvdh/laravel-ide-helper
认为有 "illuminate/filesystem": "5.0.28"
我的第一个方法:
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
它不起作用,因为 illuminate/filesystem
它被 laravel/framework
用作子树,然后我必须为 laravel/framework
设置别名而不是 illuminate/filesystem
。
我正在测试 Laravel Framework 新的 5.1 版本。
我想安装著名的 barryvdh/laravel-ide-helper
包。
A知道问题是:barryvdh/laravel-ide-helper
require illuminate/filesystem: 5.0.x
and laravel/framework
require illuminate/filesystem: 5.1.x
.
如何配置我的 composer.json
文件?
注意:我的 composer.json 文件中有 "minimum-stability": "dev"
和 "prefer-stable": true
。
安装时,出现此错误:
Problem 1
- Conclusion: remove laravel/framework 5.1.x-dev
- barryvdh/laravel-ide-helper 2.0.x-dev requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.0 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.1 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.2 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- barryvdh/laravel-ide-helper v2.0.3 requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- don't install illuminate/filesystem 5.0.x-dev|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.0|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.22|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.25|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.26|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.28|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem v5.0.4|don't install laravel/framework 5.1.x-dev
- Installation request for laravel/framework 5.1.* -> satisfiable by laravel/framework[5.1.x-dev].
- Installation request for barryvdh/laravel-ide-helper ^2.0@dev -> satisfiable by barryvdh/laravel-ide-helper[2.0.x-dev, v2.0.0, v2.0.1, v2.0.2, v2.0.3].
我已经尝试了以下所有命令,结果相同...
$ composer require barryvdh/laravel-ide-helper,
$ composer require barryvdh/laravel-ide-helper:@dev --dev
$ composer require barryvdh/laravel-ide-helper --dev --update-with-dependencies
我也尝试在 composer.json
文件上创建一个别名:
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
然后出现这个错误:
Problem 1
- Installation request for barryvdh/laravel-ide-helper dev-master -> satisfiable by barryvdh/laravel-ide-helper[dev-master].
- Conclusion: remove laravel/framework 5.1.x-dev
- Conclusion: don't install laravel/framework 5.1.x-dev
- barryvdh/laravel-ide-helper dev-master requires illuminate/filesystem 5.0.x -> satisfiable by illuminate/filesystem[5.0.x-dev, 5.0.28].
- don't install illuminate/filesystem 5.0.x-dev|don't install laravel/framework 5.1.x-dev
- don't install illuminate/filesystem 5.0.28|don't install laravel/framework 5.1.x-dev
- Installation request for laravel/framework 5.1.* -> satisfiable by laravel/framework[5.1.x-dev].
这是我的 composer.json
文件:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"Portal\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev",
"prefer-stable": true
}
核心问题源于对 5.0.x
的过度限制版本约束。我不知道这是否有充分的理由。
一个选择是将 laravel-ide-helper
分叉到您自己的仓库中,将版本限制更改为 ^5.0
之类的内容(也许还有包名称),然后将您的分叉仓库添加为 git 存储库在您的 composer.json
文件中。这至少可以让您看到它是否按预期工作。
正如您所指出的,问题是您安装了 Laravel 5.1(顺便说一句,它仍然不稳定,我不建议使用它 atm)并且该软件包需要 5.0.*.
有几种解决方案:
- 在 laravel ide 帮助库中创建一个问题,要求作者放宽版本限制。请注意,此库与版本密切相关,这可能是版本限制如此严格的原因。
- 不要安装不稳定的5.1版本,而是坚持使用5.0,等5.1发布和更新包时使用。
我已经用 composer.json
文件中的一个别名解决了问题:
"require": {
"laravel/framework": "5.1.x-dev as 5.0.28"
},
所以,laravel/framework 有 "illuminate/filesystem": "5.1.x-dev"
而 barryvdh/laravel-ide-helper
认为有 "illuminate/filesystem": "5.0.28"
我的第一个方法:
"require": {
"laravel/framework": "5.1.*",
"illuminate/filesystem": "5.1.x-dev as 5.0.28"
},
它不起作用,因为 illuminate/filesystem
它被 laravel/framework
用作子树,然后我必须为 laravel/framework
设置别名而不是 illuminate/filesystem
。