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

54

我正在创建自己的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": []

现在我已经不知道该做什么了。README中说要在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"
        }
    }
}

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

6个回答

83

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
}

55

对于其他遇到同样问题的人,最好使用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上的Dev包的完美方法。感谢@Daniel。 - Thirsty Six

10

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

看起来您展示的是要求的软件包的composer.json文件而不是您自己项目的composer.json文件。在您项目根目录下的composer.json文件中应添加prefer-stableminimum-stability属性:

{
  "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
问题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]满足要求,但与您的要求或最小稳定性冲突。 - 仍然出现此错误。
- linux932
你需要将此添加到项目根目录的composer.json文件中,而不是coderstephen/slack-client包的composer.json文件中。 - Andy

8
通常,这个问题与最小稳定性或偏好稳定选项无直接关系,而是因为您已经直接或间接地使用了某个库,该库需要另一个您使用的库的更高版本。
我的情况:我在Codeception库中遇到了这个错误消息,它需要至少6及以上版本(>= 6)的PHPUnit依赖,但它与我先前已直接安装/要求的PHPUnit依赖低于版本4发生冲突(作为我的composer.json文件中的一个软件包)。 (由于它是我使用的PHP版本支持的最后一个版本,因此我的具体情况无法使用比版本6更高的PHPUnit)。
您可能会问,它是否会影响您的项目,该项目已依赖于较低版本的库,也许会有一些破坏性的变化,但我不知道是否有一些解决方案来使用一个版本的依赖项和自己项目的另一个版本。
编辑:我还不得不发布一个删除composer命令以获取phpunit依赖项,否则我将无法直接增加我的phpunit版本。

1

0

我在一个带有自己的bundles的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”(在我的-foo-bundle中)和“ramsey/uuid-doctrine dev-master”(在我的应用程序配置中)。所以我删除了app/composer.json中的要求。

这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接