Composer - 请求的包存在,但这些包被约束拒绝

时间:2016-10-11 10:02:54

标签: php composer-php bundle stability

当我从composer运行安装时,出现此错误:

  

λ作曲家安装   您正在运行已启用xdebug的composer。这对运行时性能有重大影响。见https://getcomposer.org/xdebug   使用包信息加载composer存储库   更新依赖项(包括require-dev)   您的要求无法解析为可安装的软件包。

错误:

  

问题1            - 请求的包antoineb1 / smoney_bundle 1.0以antoineb1 / smoney_bundle [dev-master]的形式存在,但是这些被约束拒绝。

我的 composer.json

{
    "name": "project",
    "license": "proprietary",
    "type": "project",
    "minimum-stability": "dev",
    "prefer-stable" : true,
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": [
        {
            "url": "bitbucket url",
            "type": "vcs"
        }
    ],
    "require": {
        "php": ">=5.5.9",
        "antoineb1/smoney_bundle": "1.0"
    }
}

5 个答案:

答案 0 :(得分:28)

版本约束"1.0""1.0.0.0-stable"版本为1.0.*

但唯一可用的版本是:

  

antoineb1 / smoney_bundle [DEV-主]。

因此,您可以将指定的版本更改为以下任一版本,具体取决于适合您的版本:

  • >=1.0.0.0-dev <1.1.0.0-dev(作曲家将其视为dev-master - 可能无法正常工作,因为该套餐中显然没有任何版本)
  • dev-master#<hash>
  • @dev
  • [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",ApplyFormatInEditMode = true)] [Column(TypeName = "datetime2")] public DateTime? BirthDay { get; set; }

请参阅interpreted internally以供参考。

答案 1 :(得分:5)

this answer以下@Guillaume的评论值得更多的展示。

似乎作曲家希望git release中有v

因此它应该是v1.1.0而不是1.1.0

我花了大约90分钟看着

mikeill/my_repo 3.3.10 requires composer/installers 1.0.*@dev -> satisfiable by composer/installers[1.0.x-dev, v1.0.0, ...] but these conflict with your requirements or minimum-stability.

在最终发现这个帖子之前,还有很多github问题以及一两个SO帖子。

答案 2 :(得分:2)

我遇到了这个问题,发现了另一个我完全忘记的问题,可能有人觉得有必要对其进行检查。

在我的情况下,我有一个非常老的git项目,该项目在前一段时间已经分叉,并且我不得不将它们合并在一起(尽管分叉的项目没有太多更改)。因此,我确定了旧项目上的分割点,并将其标记为作曲家的版本,因此可以代替新项目使用它。

我忘记的是,最初我们不使用作曲家。因此,标记点的文件结构缺少composer.json。我不知道为什么我的新标签没有出现在“被您的约束拒绝”的事物的“存在为”列表中。最终,我意识到我必须在旧标签上创建一个分支,挑选用于创建该项目的composer.json的提交,并对其进行重新标记,然后所有工作就可以了。

希望这会激发某人的记忆,如果他们在考虑此错误消息的情况下进行狩猎。

答案 3 :(得分:2)

在这个问题上,我花了相当长的时间,头发和精力。事实证明,我的问题是我在包本身内的composer.json中将版本指定为“ dev-大师”。

引用:https://getcomposer.org/doc/04-schema.md#version

其中注明:

  

注意:Packagist使用VCS存储库,因此上述声明对Packagist也非常适用。 自己指定版本很可能最终会由于人为错误而导致问题

(重点是我的)

我删除了这个version元素,并且效果很好:)

答案 4 :(得分:1)

搜索了一会后,我发现我的作曲家文件中没有存储库。有人将其删除,因此仅以前的版本有效。

...

"require": {
    "company/my-repo": "*"
}

...

"repositories": [
    {
        "type": "vcs",
        "url": "git@bitbucket.org:company/my-repo.git"
    },
],

...