在任何版本中都找不到请求的包...

时间:2016-10-18 22:21:35

标签: php git composer-php

当我想要我的项目时,会出现以下错误:

在任何版本中都找不到请求的包mvc-php / framework,包名中可能有拼写错误。

" mvc-php / framework"是一个git文件夹。

{
    "name": "mvc-php/app",
    "repositories": [
        {
            "type": "path",
            "url": "/Users/youri/Documents/Github/framework"
        }
    ],
    "require": {
        "php": ">=7.0",
        "mvc-php/framework": "master"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

我想要的项目:

{
    "name": "mvc-php/framework",
    "description": "PHP MVC framework",
    "autoload": {
        "psr-4": {
            "Mvc\\" : "src/"
        }
    },
    "require": {
        "php": ">=7.0"
    }
}

5 个答案:

答案 0 :(得分:12)

您必须要求branchName@dev

,而不仅仅是分支名称

https://getcomposer.org/doc/articles/versions.md#branches

{
    "name": "mvc-php/app",
    "repositories": [
        {
            "type": "path",
            "url": "/Users/youri/Documents/Github/framework"
        }
    ],
    "require": {
        "php": ">=7.0",
        "mvc-php/framework": "master@dev"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

答案 1 :(得分:9)

  

在任何版本中都找不到请求的包X / Y.

请求的包需要是一个包含已提交和现有composer.json文件的git文件夹。然后,要引用特定分支,您需要添加dev-前缀,因此dev-master不是master

实施例

以下是最小的工作示例:

文件: composer.json

{
  "require": {
    "local/my_package": "dev-master"
  },
  "repositories": [
    {
      "packagist.org": false
    },
    {
      "type": "path",
      "url": "my_package/"
    }
  ]
}

文件: my_package/composer.json

{
  "name": "local/my_package",
  "require-dev": {
    "symfony/console": "*"
  }
}

注意:上面的文件位于本地Git存储库下。要创建一个,请运行:git init && git commit -am 'Files'

Troubleshooting

要解决此问题,请运行:

composer install -vvv

另请考虑运行:composer diagnose以识别常见的 Composer 错误。

答案 2 :(得分:5)

由于这是在Google上搜索错误文字时的第一个回复,我也会在此处提出修正案,尽管与OP没有100%的相关性。

当您需要回购时,您需要确保您的requires语句与项目的composer.json中项目的名称相匹配。

因此,如果框架项目中的名称为"name": "mvc-php/app-framework",,则需要为:

"require": {
  "mvc-php/app-framework": "dev-master"
},

当您添加git repo时,这更适用。特别是在分叉时,有时git url可能与composer.json名称不同。

此外(这是与OP相关的部分),您现在需要时dev-branch_name而不是branch_name@dev。我不知道什么时候改变了,或者旧的方法是不可用的。但这就是现在的作曲家文档现在所说的。

  

如果您希望Composer签出分支而不是标签,则需要使用特殊的dev-*前缀将其指向分支   <子> Composer Documentation - Versions and Constraints - Branches

答案 3 :(得分:3)

另一个需要注意的陷阱:

我更改了我开发的程序包的名称,而只是在其中测试了一个分支。我遵循了上面提到的所有正确的命名约定,但仍然遇到了给定的错误。

事实证明,要获取名称更改,即使您是,也必须更新软件包回购主分支(对我来说composer.json)上Master中的软件包名称不在项目中使用该分支。

答案 4 :(得分:0)

请务必注意,如果不将自己的镜像源添加到全局变量,则在找不到子场景的地方会发生错误。 您可以在composer.json中添加它:

"repositories":[
 {
  "type":"composer",
  "url":"https://packag"
 }
],