且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

composer.json无法解析可安装的程序包集

更新时间:2023-11-16 22:57:40

这里的关键部分如下: p>

  [...] 
white-october / pagerfanta-bundle dev-master需要symfony / framework-bundle> = 2.2,< 3.0 - >可由symfony / symfony [v2.2.0,v2.2.1],symfony / framework-bundle [v2.2.0,v2.2.1]满足。
[...]

这可能会导致混乱!让我解释一下:



虽然它说依赖可以通过更新 symfony / symfony 到2.2.0或2.2.1 ...更新是不需要! (即使更新可能是一个好主意,没有必要解决这个问题,并可能导致破碎的代码,因为BC [向后兼容性]断裂)



注意:



许多邮件包都有旧版分支 ...例如 2.1.x分支以支持 symfony / symfony 2.1。



packagist ,然后将整个项目盲目更新到新版本的根包!



提示::

通常情况下,如果组合器无法获取依赖关系,这通常与您所需的最低稳定性包。所有包的最低稳定性通常默认为稳定。

解决方案: b $ b

smarttech对 white-october / pagerfanta-bundle 使用了错误的分支(dev-master),并将其与symfony 2.1 配合使用。 2.1的正确分支应为:

 white-october / pagerfanta-bundle: 2.1.*@dev

...其中 @dev stable标志告诉composer对这个单独的包使用doctrine-extensions-bundle的 dev 版本。请详细了解作曲家的稳定性标记



快速查看稳定性阶层

 code> dev< α, β, rc   

替代方案



解决问题的另一种方法是设置作曲家的最低稳定性。



虽然这不适用于所有约束,因此不推荐使用 ,结果会得到不稳定版本的 all 包。

  {

[...]
require:

[...]

minimum-stability:dev,

[...]

b $ b


i can't install stof/doctrine-extensions-bundle with my composer.i 'm using Symfony2.1.9 version.a lot of problems are shown.the first one is:the requested package stof/doctrine-extensions-bundle 1.1.* could not be found. this is my composer.json file:

{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.1.*",
        "doctrine/orm": ">=2.2.3,<2.5-dev",
        "doctrine/doctrine-bundle": "1.1.*",
        "twig/extensions": "1.0.*@dev",
        "symfony/assetic-bundle": "2.1.*",
        "symfony/swiftmailer-bundle": "2.1.*",
        "symfony/monolog-bundle": "2.1.*",
        "sensio/distribution-bundle": "2.1.*",
        "sensio/framework-extra-bundle": "2.1.*",
        "sensio/generator-bundle": "2.1.*",
        "jms/security-extra-bundle": "1.2.*",
        "jms/di-extra-bundle": "1.1.*",
        "kriswallsmith/assetic": "1.1.*@dev",




        "pagerfanta/pagerfanta": "dev-master",
        "white-october/pagerfanta-bundle": "dev-master",
        "friendsofsymfony/user-bundle": "dev-master",
        "saad-tazi/g-chart-bundle": "dev-master",
       "stof/doctrine-extensions-bundle": "1.1.*",
    },
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.1-dev"
        }
    }
}

when i set the package requirement to: "stof/doctrine-extensions-bundle": "1.1.*@dev" the response was: your requirement could not be resolved to an installable set of package

what could be the problem please?? should i install DoctrineExtensions first????

error message:

  Problem 1
    - Conclusion: don't install symfony/symfony v2.1.10
    - Conclusion: remove symfony/symfony v2.1.9
    - Conclusion: don't install symfony/symfony v2.1.9
    - Conclusion: don't install symfony/symfony v2.1.8
    - Conclusion: don't install symfony/symfony v2.1.7
    - Conclusion: don't install symfony/symfony v2.1.6
    - Conclusion: don't install symfony/symfony v2.1.5
    - Conclusion: don't install symfony/symfony v2.1.4
    - Conclusion: don't install symfony/symfony v2.1.3
    - Conclusion: don't install symfony/symfony v2.1.2
    - Conclusion: don't install symfony/symfony v2.1.1
    - white-october/pagerfanta-bundle dev-master requires symfony/framework-bund
le >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framewo
rk-bundle[v2.2.0, v2.2.1].
    - white-october/pagerfanta-bundle dev-master requires symfony/framework-bund
le >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framewo
rk-bundle[v2.2.0, v2.2.1].
    - Can only install one of: symfony/symfony[v2.2.0, v2.1.0].
    - Can only install one of: symfony/symfony[v2.2.1, v2.1.0].
    - don't install symfony/framework-bundle v2.2.0|don't install symfony/symfon
y v2.1.0
    - don't install symfony/framework-bundle v2.2.1|don't install symfony/symfon
y v2.1.0
    - Installation request for symfony/symfony 2.1.* -> satisfiable by symfony/s
ymfony[v2.1.0, v2.1.1, v2.1.10, v2.1.2, v2.1.3, v2.1.4, v2.1.5, v2.1.6, v2.1.7,
v2.1.8, v2.1.9].
    - Installation request for white-october/pagerfanta-bundle dev-master -> sat
isfiable by white-october/pagerfanta-bundle[dev-master].

The critical part in here is the following:

[...]
white-october/pagerfanta-bundle dev-master requires symfony/framework-bundle >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framework-bundle[v2.2.0, v2.2.1].
[...]

Which can lead to confusion! Let me explain:

Though it says the dependency is satisfiable by updating symfony/symfony to 2.2.0 or 2.2.1 ... this update is NOT NEEDED !! ( even if updating might be a good idea it is not necessary to resolve the issue and could lead to broken code because of BC [backward compatibility] breaks )

Attention:

Many bundles have a legacy branch ... for example a 2.1.x branch to support symfony/symfony 2.1.

Look for these branches on packagist prior to blindly updating your whole project to a new version of the root package!

Tip:

Generally if composer fails to fetch a dependency this is often related to the minimum stability for one of your required packages. minimum stability of all packages normally defaults to stable.

Solution:

smarttech used the wrong branch (dev-master) for white-october/pagerfanta-bundle to use it with symfony 2.1. The correct branch for 2.1 would have been:

"white-october/pagerfanta-bundle": "2.1.*@dev"

... where the @dev stability flag tells composer to use the dev version of doctrine-extensions-bundle for this single package. Please read more about composer's Stability Flags.

Take a quick look at the stability hierarchy:

dev < alpha < beta < rc < beta 

Alternative:

Another way to solve the issue would have been setting composer's minimum stability.

Though this is not recommended as it applies to all constraints and as a result you will get unstable versions of all packages.

{

    [...]
    "require" :

        [...]

    "minimum-stability" : "dev",

    [...]

}