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

Posted

技术标签:

【中文标题】但这些与您的要求或最低稳定性相冲突【英文标题】:but these conflict with your requirements or minimum-stability 【发布时间】:2017-12-14 15:28:26 【问题描述】:

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

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.

好的 - 所以我决定在我的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中设置“minimum-stability”,建议你设置“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"
        
    

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

【问题讨论】:

【参考方案1】:

通常,此问题与 minimum-stability 或 prefer-stable 选项没有直接关系,但这种情况只是您已经直接或间接使用了某个库,这是您使用的另一个库中需要的,但在更高版本中.

我的情况:收到了 Codeception 库的此错误消息,该库需要 PHPUnit 至少 6 及更高版本 (>= 6) 的依赖项,但它与我安装的 PHPUnit 依赖项的较低版本 4 冲突/在它之前已经直接需要(作为我的 composer.json 文件中的一个包)。 (我的具体情况不能使用高于版本 6 的 PHPUnit,因为它是我使用的支持 php 版本的最后一个版本)。

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

编辑:我还必须为 phpunit 依赖发出删除 composer 命令,否则我无法直接增加我的 phpunit 版本。

【讨论】:

【参考方案2】:

我在带有自己的包的 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 中的要求。

这对我有用。

【讨论】:

【参考方案3】:

对于遇到相同问题的其他人,最好使用 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 和 stable

【讨论】:

这是在 composer 上启用开发包的完美方式。谢谢@丹尼尔【参考方案4】:

minimum-stabilityprefer-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

【讨论】:

【参考方案5】:

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

您似乎显示了您尝试需要的包的 composer.json 文件,而不是您自己项目的 composer.json。 prefer-stableminimum-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"
  

【讨论】:

问题 1 - coderstephen/slack-client ^0.3.0 的安装请求 -> 可由 coderstephen/slack-client[v0.3.0] 满足。 - coderstephen/slack-client v0.3.0 需要 devristo/phpws dev-master -> 可由 devristo/phpws[dev-master] 满足,但这些与您的要求或最低稳定性相冲突。 - 仍然得到这个错误 你需要将这个添加到项目根目录的composer.json文件中,而不是coderstephen/slack-client包的composer.json中【参考方案6】:

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

【讨论】:

以上是关于但这些与您的要求或最低稳定性相冲突的主要内容,如果未能解决你的问题,请参考以下文章

根据您的最低稳定性设置,该软件包在足够稳定的版本中不可用

Composer/Packagist 找不到最低稳定性的软件包

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 对应的手册

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL

Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突