55

当我从作曲家运行我的安装时,我有这个错误:

λ composer install 您正在运行启用了 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"
    }
}
4

5 回答 5

40

版本约束"1.0"内部解释"1.0.0.0-stable"版本。

但唯一可用的版本是:

antoineb1/smoney_bundle[dev-master]。

因此,您可以根据适合您的版本将指定版本更改为以下任一版本:

  • 1.0.*(作曲家认为这>=1.0.0.0-dev <1.1.0.0-dev可能不起作用,因为该软件包中显然没有任何版本)
  • dev-master
  • dev-master#<hash>
  • @dev
  • 等等

请参阅作曲家模​​式以供参考。

于 2016-10-11T10:29:55.800 回答
14

@Guillaume 在此答案下方的评论值得进行更大的介绍。

似乎作曲家想要一个包含其中的git版本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 帖子。

于 2018-03-30T07:34:49.360 回答
9

一段时间以来,我在这个问题上失去了大量的头发、时间和理智——事实证明,我的问题是我在包本身的 composer.json 中将一个版本指定为“dev-master”。

参考:https ://getcomposer.org/doc/04-schema.md#version

它在哪里声明:

注意:Packagist 使用 VCS 存储库,因此上面的陈述对于 Packagist 也非常正确。由于人为错误,您自己指定版本很可能最终会在某些时候产生问题。

(强调我的)

我删除了这个版本元素,它工作得很好:)

于 2018-10-19T09:25:34.487 回答
3

搜索了一段时间后,我发现我的作曲家文件中缺少存储库。有人删除了它,因此只有以前的版本有效。

...

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

...

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

...
于 2020-09-04T14:38:01.767 回答
3

我遇到了这个问题,并发现了另一个我完全忘记的问题,有人可能会觉得这很有用。

就我而言,我有一个非常古老的 git 项目,该项目已经分叉了一段时间,我不得不将它们合并在一起(尽管分叉的项目没有太多变化)。所以我确定了旧项目上的分割点,并将其标记为作曲家的版本,这样我就可以用它来代替新项目。

不过我忘记了,原来我们没有使用 composer。所以标签点的文件结构缺少composer.json。我不明白为什么我的新标签没有出现在“被你的约束拒绝”的“存在”列表中。最终我意识到我必须在旧标签上创建一个分支,挑选为项目创建 composer.json 的提交,然后重新标记它,然后一切正常。

希望这会唤起某人的记忆,如果他们带着这个错误信息来狩猎。

于 2018-09-03T15:17:26.670 回答