翻译Composer的错误消息

时间:2014-07-18 05:17:53

标签: composer-php

运行以前从未发生过的composer update时出现此错误。有没有人向我提供此错误消息的含义翻译,而不是询问此安装的具体问题?

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - skullyframework/skully-admin v0.1.3 requires symfony/console 2.5.x-dev -> no matching package found.
    - skullyframework/skully-admin v0.1.2 requires symfony/console 2.5.x-dev -> no matching package found.
    - skullyframework/skully-admin v0.1.1 requires symfony/console 2.5.x-dev -> no matching package found.
    - Installation request for skullyframework/skully-admin 0.1.* -> satisfiable by skullyframework/skully-admin[v0.1.1, v0.1.2, v0.1.3].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

如果它有帮助,我的composer.json看起来像这样:

{
    "name": "xxx",
    "description": "xxx",
    "minimum-stability": "stable",
    "require-dev": {
        "phpunit/phpunit": "3.7.28",
        "phpunit/phpunit-selenium": ">=1.2",
        "phpunit/dbunit": ">=1.2",
        "mikey179/vfsStream": "v1.2.0"
    },
    "require": {
        "phpmailer/phpmailer": "v5.2.7",
        "skullyframework/skully": "0.1.*",
        "skullyframework/skully-admin": "0.1.*"
    },
    "autoload": {
        "psr-0": {
            "App\\": "",
            "HtmlPlainText" : "library/htmlPlainText"
        }
    },
    "license": "MIT"
}

2 个答案:

答案 0 :(得分:1)

如果您查看skullyframework/skully-admin,则需要

中的版本0.1
php: >=5.4
symfony/console: 2.5.x-dev
skullyframework/skully: 0.1.*

请不要依赖symfony / console 2.5.x-dev。

在你的composer.json中你明确提到只下载稳定版本(参见minimum-stability标志)。这意味着当看packagist时,composer无法解决所需的依赖关系。

如果在skullyframework / skully-admin中他们已经提到2.5。*作为依赖,https://packagist.org/packages/symfony/console已经发布了你将下载的版本相同。

同样适用于任何包,如果显示如下错误。

在这种情况下,一种替代方法是让作曲家下载开发版。所以保持

"minimum-stability": "dev"

希望有所帮助!

谢谢

答案 1 :(得分:1)

您要求翻译该错误消息,所以我们转到:

Your requirements could not be resolved to an installable set of packages.

Composer声明,根据包,版本和稳定性级别的要求,它无法在没有矛盾的情况下解决所有这些依赖关系。

  Problem 1
    - skullyframework/skully-admin v0.1.3 requires symfony/console 2.5.x-dev -> no matching package found.
    - skullyframework/skully-admin v0.1.2 requires symfony/console 2.5.x-dev -> no matching package found.
    - skullyframework/skully-admin v0.1.1 requires symfony/console 2.5.x-dev -> no matching package found.
    - Installation request for skullyframework/skully-admin 0.1.* -> satisfiable by skullyframework/skully-admin[v0.1.1, v0.1.2, v0.1.3].

让我们向后看这个详细信息。最后一行列出了考虑包的哪个版本。 Composer正在查看skullyframework/skully-admin,您需要0.1.*。它检测到有以下版本符合此版本要求:v0.1.1, v0.1.2, v0.1.3

上面列出了每个版本的所有行,为什么特定版本不满足要求。

你可能是对的,单凭这些行本身并不能解释为什么现有的分支2.5.x-dev不被认为是“匹配的包”。一个提示解释说,尽管存在分支,但由于您的最小稳定性而未考虑:稳定的要求会很好。但是:暗示已经存在,遗憾的是埋没在最后几行中,没人读过:

The package is not available in a stable-enough version according to your minimum-stability setting

然而,这仍然不是一个很好的指针来解释出现了什么问题。

在链接之后,您将收到一条声明,声明Composer在2012年7月将最低稳定性从“dev”切换为“stable”,并指向Composer文档页面,并简要讨论了最小稳定性的事实。仅限root包设置。

让主程序包强制执行稳定意味着所有子程序包都不能依赖稳定性不够稳定的程序包(不包括任何开发版本分支,如2.5.x-dev)。

将项目中的最低稳定性降低到“dev”是个坏主意,因为这会影响您正在使用的所有软件包及其所有依赖项,导致大多数软件包安装在开发版本中(如果存在) ,并且版本比上一个稳定版本更新,但仍然符合版本要求。

Composer有一个设置,试图避免处理所有正在开发稳定的包,但只处理所需的包:prefer-stable:true

您可以通过另一种方式解决问题:您可以在根项目中明确包含“缺失”开发包,如下所示:

"require": {
    "symfony/console": "2.5.x-dev"
}

一般结论:避免使用不稳定的包裹。并使用包使用不稳定的包。