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

问题描述 投票:0回答:6

当我从 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"
    }
}
php composer-php bundle stability
6个回答
44
投票

版本约束

"1.0"
在内部解释为"1.0.0.0-stable"
版本。

但唯一可用的版本是:

antoineb1/smoney_bundle[开发大师]。

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

  • 1.0.*
    (作曲家将其视为
    >=1.0.0.0-dev <1.1.0.0-dev
    ——可能不起作用,因为该包中显然没有任何版本)
  • dev-master
    
    
  • dev-master#<hash>
    
    
  • @dev
    
    
  • 等等
请参阅

作曲家架构以供参考。


14
投票
下面@Guillaume 的评论

这个答案值得更详细的介绍。

作曲家似乎想要一个包含

vgit 版本

所以应该是

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 帖子。


9
投票
我有一段时间因为这个问题而失去了大量的头发、时间和理智——事实证明,我的情况的问题是我在包本身的composer.json中指定了一个版本作为“dev-master” .

参考:

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

其中注明:

注意:Packagist 使用 VCS 存储库,因此上面的陈述对于 Packagist 来说也非常正确。

自己指定版本很可能会在某些时候由于人为错误而产生问题

(强调我的)

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


3
投票
我遇到了这个问题,并发现了另一个问题,我完全忘记了这个问题,有人可能会觉得有必要检查一下。

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

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

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


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

... "require": { "company/my-repo": "*" } ... "repositories": [ { "type": "vcs", "url": "[email protected]:company/my-repo.git" }, ], ...
    

0
投票
我创建了标签和版本,并将存储库发布到 Packagist。什么都没起作用!我必须将存储库添加到composer.json 中的“存储库”键中:

"repositories": { "andreshg112/aws-sns": { "type": "vcs", "url": "https://github.com/andreshg112/aws-sns.git" } }
    
© www.soinside.com 2019 - 2024. All rights reserved.