我正在创建自己的松弛机器人。我决定使用项目作为库来帮助我。
https://github.com/sagebind/slack-client/issues?utf8=%E2%9C%93&q=stability
现在我需要用作曲家安装它。
所以我使用了命令:composer require coderstephen/slack-client
。我收到错误:
Problem 1
- Installation request for coderstephen/slack-client ^0.3.0 -> satisfiable by coderstephen/slack-client[v0.3.0].
- coderstephen/slack-client v0.3.0 requires devristo/phpws dev-master -> satisfiable by devristo/phpws[dev-master] but these conflict with your requirements or minimum-stability.
好的 - 所以我决定在我的composer.lock
中将我的稳定性级别更改为"dev":
"aliases": [],
"minimum-stability": "dev",
"stability-flags": {
"devristo/phpws": 20
},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": ">=5.5"
},
"platform-dev": []
现在我对该怎么做没有想法了。自述文件说要在 composer.json 中执行此步骤,但不存在这样的设置:
请注意,当前版本具有不稳定的依赖项。
为了安装这些依赖项,您可以在 composer.json 中设置"最小稳定性",并建议您设置"首选稳定":
我的作曲家.json:
{
"name": "coderstephen/slack-client",
"keywords": ["slack", "api", "realtime"],
"license": "MIT",
"description": "A better Slack client, with RTM API support",
"authors": [{
"name": "Stephen Coakley",
"email": "me@stephencoakley.com"
}],
"require": {
"php": ">=5.5",
"devristo/phpws": "dev-master",
"evenement/evenement": "2.0.*",
"guzzlehttp/guzzle": "~6.0",
"react/event-loop": "^0.4.1",
"react/promise": "^2.2"
},
"require-dev": {
"phpunit/phpunit": "~4.6",
"fzaninotto/faker": "~1.4",
"apigen/apigen": "^4.1"
},
"autoload": {
"psr-4": {
"Slack\": "src"
}
},
"autoload-dev": {
"psr-4": {
"Slack\Tests\": "tests"
}
}
}
有谁知道我可以尝试的一些解决方案?
将minimum-stability
和prefer-stable
添加到您的composer.json
(不是composer.lock
(:
{
"name": "coderstephen/slack-client",
"keywords": ["slack", "api", "realtime"],
"license": "MIT",
"description": "A better Slack client, with RTM API support",
"authors": [{
"name": "Stephen Coakley",
"email": "me@stephencoakley.com"
}],
"require": {
"php": ">=5.5",
"devristo/phpws": "dev-master",
"evenement/evenement": "2.0.*",
"guzzlehttp/guzzle": "~6.0",
"react/event-loop": "^0.4.1",
"react/promise": "^2.2"
},
"require-dev": {
"phpunit/phpunit": "~4.6",
"fzaninotto/faker": "~1.4",
"apigen/apigen": "^4.1"
},
"autoload": {
"psr-4": {
"Slack\": "src"
}
},
"autoload-dev": {
"psr-4": {
"Slack\Tests\": "tests"
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
对于有相同问题的其他人,最好使用作曲家本身完成这些更改,而不是手动修改 composer.json 文件。只需在控制台中运行以下命令:
$composer config minimum-stability dev
$composer config prefer-stable true
现在,您可以要求并更新包:
$composer require --no-update "vendor/package-name:version"
$composer update
可用选项(按稳定性顺序(是开发、alpha、beta、RC 和稳定
切勿手动编辑 composer.lock 文件 - 它是一个自动生成的文件。
看起来您已经显示了您尝试要求的包的 composer.json 文件,而不是您自己的项目的 composer.json。prefer-stable
和minimum-stability
属性应添加到项目根目录的 composer.json 文件中:
{
"name": "xFlare/slack-bot",
"description": "xFlare's Slack bot project",
"authors": [
{
"name": "xFlare"
}
],
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"php": ">=5.5",
"coderstephen/slack-client": "^0.3.0"
}
}
通常,此问题与最小稳定性或首选稳定选项没有直接关系,但情况只是您已经直接或间接使用了某个库,这是您使用的另一个库需要的,但在更高版本中。
我的情况:对于至少需要版本 6 及更高版本 (>= 6( 的 PHPUnit 依赖项的 Codeception 库收到此错误消息,但它与 PHPUnit 依赖项的较低版本 4 冲突,我已经在它之前直接安装/需要它(作为我的 composer.json 文件中的包(。(我的具体情况不能使用比版本 6 更高的 PHPUnit,因为它是支持我使用的 php 版本的最后一个版本(。
您可能会问它是否会影响您的项目,该项目已经依赖于库的较低版本,也许可能会有一些重大更改,但我不知道是否有一些解决方法将一个版本用于依赖项和另一个版本用于自己的项目。
编辑:我还必须为phpunit依赖项发出删除作曲家命令,否则我无法直接增加我的phpunit版本。
你应该在你的 composer.json 中添加最小稳定性,而不是在 composer.lock 中添加。该选项存在,请参阅 https://getcomposer.org/doc/04-schema.md#minimum-stability
我在带有自己的捆绑包的 Symfony4 项目中遇到了错误。
my-foo-bundle dev-master requires ramsey/uuid-doctrine ^1.5 -> satisfiable by ramsey/uuid-doctrine[1.5.0, 1.6.0] but these conflict with your requirements or minimum-stability.
解决方案,我在我的捆绑包中搜索"Ramsey/UUID-doctrine">,我发现了不同的要求"Ramsey/UUID-doctrine ^1.5"(在my-foo-bundle中(和"Ramsey/uuid-doctrine dev-master"(在我的应用程序配置中(。所以我删除了app/composer.json中的要求。
这对我有用。