如何解决作曲家的'包不可用的稳定版本'错误?

时间:2014-03-20 15:02:01

标签: json git composer-php

最近,我一直在做很多关于Composer最小稳定性的研究。我进入官方文档并阅读最小稳定性变化。但是,即使如此,我也无法让作曲家安装依赖项。

我有root包和其他两个,我们称之为packageA和packageB。 当我在root包中需要packageB时,packageB必须随身携带packageA,但是当我收到错误时就是这样。

  

您的要求无法解析为可安装的软件包。

     

问题1

     
      
  • packageB / packageB dev-master的安装请求 - >可以通过packageA / packageA [dev-master]来满足。
  •   
  • packageB / packageB dev-master需要packageA / packageA dev-master - >找不到匹配的包。
  •   
     

潜在原因:

     
      
  • 包名称中的类型
  •   
  • 根据您的最小稳定性设置,包装不具备足够稳定的版本。
  •   

我的composer.json

的root包短版本

    {
      "require": {      
        "packageB/packageB": "dev-master"
      },
      "repositories": [
        {
          "type": "vcs",
          "url":  "git@bitbucket.org:packageB/packageB.git"
        }
      ],
      "minimum-stability": "dev"
    }

我的composer.json

的packageA简短版本

    {
      "require": {      

      },
      "minimum-stability": "dev"
    }

我的composer.json的packageB短版本


    {
      "require": {      
        "packageA/packageA": "dev-master"
      },
      "repositories": [
        {
          "type": "vcs",
          "url":  "git@bitbucket.org:packageA/packageA.git"
        }
      ],
      "minimum-stability": "dev"
    }

需要packageA的root必需packageB,但是packageB说在匹配条件下找不到packageA。

我做错了什么?

非常感谢。

2 个答案:

答案 0 :(得分:12)

我找到了合适的解决方案。

这就是我的所作所为。

首先:

  

我删除了包A和B的composer.json中的最小稳定性字段;对于最小稳定性是仅有根的字段。如[link] https://getcomposer.org/doc/04-schema.md#minimum-stability)中所述。

但真正的解决方案是,当我使用自己的私有软件包时,我使用bitbucket来托管这两个软件包,将repos指向我的composer.json里面的“repositories”字段,在根作曲家里面packageB作曲家。

这就是错误。

如本link所述,作曲家的根包必须包含存储库字段内所有存储库的链接。

就像这样:

我的composer.json

的root包短版本
{
  "require": {      
    "packageB/packageB": "dev-master"
  },
  "repositories": [
    {
      "type": "vcs",
      "url":  "git@bitbucket.org:packageB/packageB.git"
    },
    {
      "type": "vcs",
      "url":  "git@bitbucket.org:packageA/packageA.git"
    }
  ],
  "minimum-stability": "dev"
}

我的composer.json

的packageA简短版本
{
    "require": {      

    }
}

我的composer.json的packageB短版本

{
  "require": {      
    "packageA/packageA": "dev-master"
  }
}

希望它有效,因为它对我有用。和平了!

答案 1 :(得分:1)

将最小稳定性改为开发稳定性,如:

"minimum-stability": "dev",