但这些与您的要求或最小稳定性相冲突

时间:2017-07-10 19:02:11

标签: php composer-php

我正在创建自己的slackbot。我决定使用project作为库来帮助我。

https://github.com/sagebind/slack-client/issues?utf8=%E2%9C%93&q=stability

现在我需要用composer安装它。

所以我使用了命令: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.

好的 - 那么我决定将我的稳定性水平改为" dev"在我的composer.lock

"aliases": [],
    "minimum-stability": "dev",
    "stability-flags": {
        "devristo/phpws": 20
    },
    "prefer-stable": true,
    "prefer-lowest": false,
    "platform": {
        "php": ">=5.5"
    },
    "platform-dev": []

现在我已经没有了解该怎么做了。 README说在composer.json中执行此步骤但是,不存在这样的设置:

  

请注意,当前版本的依赖项不稳定。

     

为了安装这些依赖项,您可以设置"最小稳定性"在你的composer.json中,并建议你设置" prefer-stable":

我的composer.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"
        }
    }
}

有人知道我可以尝试的一些解决方案吗?

6 个答案:

答案 0 :(得分:40)

consminimum-stability添加到prefer-stable(不是composer.json):

composer.lock

答案 1 :(得分:6)

你永远不应该手动编辑composer.lock文件 - 它是一个自动生成的文件。

您似乎已经展示了您尝试要求的软件包的composer.json文件,而不是您自己的项目的composer.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": "dev", "prefer-stable": true } prefer-stable属性添加到项目根目录的composer.json文件中:

minimum-stability

答案 2 :(得分:1)

你应该在composer.json中添加最小稳定性,而不是在composer.lock中。该选项存在,请参阅https://getcomposer.org/doc/04-schema.md#minimum-stability

答案 3 :(得分:1)

通常,此问题与最小稳定性或首选稳定选项没有直接关系,但是这种情况只是您已经直接或间接使用了某些库,这在您使用的另一个库中却需要,但在更高版本中

我的情况:我安装了Codeception,但需要PHPUnit 4,但Codeception至少需要phpunit 6-最多8。而phpunit 6仅支持php7.0,因此我必须从4显式增加我使用的phpunit版本。到6,以便库代码接收可以使用它。

您可能会问,这是否可能会影响已经依赖于该库较低版本的项目,也许会有一些重大更改,但是我不知道是否存在一些解决方法,可以使用一个版本进行依赖和自己项目的另一个版本。

编辑:我还必须对phpunit发出remove composer命令,否则我无法直接增加phpunit版本

答案 4 :(得分:0)

对于其他存在相同问题的人,最好使用composer本身完成这些更改,而不是手动修改composer.json文件。只需在控制台中运行以下命令:

$ composer config minimum-stability dev

$ composer config prefer-stable true

现在,您可以要求并更新软件包:

$ composer require --no-update "vendor/package-name:version"

$ composer update

可用选项(按稳定性顺序)是dev,alpha,beta,RC和稳定

答案 5 :(得分:0)

在具有自己的捆绑软件的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-主”(在我的应用程序配置中)。所以我删除了app / composer.json中的要求。

这对我有用。