Composer - 请求的包[0.0.9]存在于[0.0.5,0.0.6],但这些被您的限制所拒绝。

16

今天我在 composer update 中遇到了一个奇怪的错误,我自己无法描述。

{
   "repositories": {
       "my-plugin": {
           "type": "vcs",
           "url": "git@mycodebase.com:mjplug/myplugin.git"
       }
    },
   "require": {
        "my-plugin/myplugin": "0.0.9",
   }    
}
当我尝试运行composer update时,我会得到以下信息:The requested package my-plugin/my-plugin 0.0.9 exists as my-plugin/my-plugin[0.0.6, 0.0.5] but these are rejected by your constraint.然而,仓库中存在诸如0.0.7、0.0.8、0.0.9的标签,为什么找不到呢?如果我将版本约束设置为~0.0.1,它就能工作,因为Composer将安装0.0.6。有什么提示吗?谢谢。编辑:这里是我们 Bitbucket Server 实例的截图:http://imgur.com/a/m8lRT。编辑2:解决了:在最近的某个版本中,由于某种原因,我将composer.json放到了子目录中。所以这个问题是Composer无法找到最新的标签。

2
你是否尝试过使用 "why-not" 命令来检查?composer why-not my-plugin/my-plugin 0.0.9 - user3677687
没有安装依赖于“my-plugin/my-plugin”的软件包,版本不匹配0.0.9。 - Kevin Regenrek
1
你可以将你的“EDIT 2”作为答案并接受它,以关闭问题。 - Alexey Shokov
3个回答

3

Composer允许通过将分支指定为dev-来使用分支作为版本,因此dev-master与master分支相关。如果要指定特定的标签,则可以像这样进行:

"author/package": "dev-master#v1.1.0"

还可以参考以下链接:

链接

参考资料


我认为那不是问题。我真的不想使用主分支,而是想使用存储库中存在的标签。我不知道为什么0.0.6存在而0.0.9不存在。但这两个标签都在存储库中... - Kevin Regenrek
最终,您必须从特定分支创建标签。还要查看我发送链接的问题。这是关于将标签用作版本号的内容。 - user3677687
嗨,是的,这应该可以工作,但它没有。我之前已经检查了链接。谢谢,但这并没有解释为什么标签“0.0.6”有效而“0.0.9”无效。请看我在帖子中的编辑截图。 - Kevin Regenrek

3
根据Composer文档的描述,我建议您将标签更新为:v0.0.7v0.0.8v0.0.9,并放在您的主分支上。这将有助于Composer按照以下所说进行操作:

Composer首先要求VCS列出所有可用的标签,然后根据这些标签创建一个内部可用版本列表。在上面的例子中,Composer的内部列表包括版本1.0、1.0.1、1.0.2、1.1的beta发布、1.1的第一和第二个发布候选版本、最终发布版本1.1等等...(请注意,Composer会自动删除实际标签名称中的“v”前缀,以获得有效的最终版本号)。

一旦这些标签被放在您的主分支上,您的"my-plugin/myplugin": "0.0.9""my-plugin/myplugin": "0.0.*"等应该可以正常工作。

1
因为WordPress插件文件需要放在子文件夹中,所以我把所有文件,包括composer.json文件,都放到了一个子目录中,并推出了一个新版本。
后来,我尝试在我的项目中安装新版本,但是新版本没有被找到。这就是问题所在。composer.json文件需要在根目录中。(我真是太蠢了)
有用的命令: composer show myplugin/myplugin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接