Composer php 如何使用Composer安装没有版本(仅主版本)的软件包

Composer php 如何使用Composer安装没有版本(仅主版本)的软件包,composer-php,Composer Php,我是作曲家的新手,我正在尝试通过作曲家更新安装以下库 https://github.com/neitanod/forceutf8 据我所知,我的composer.json如下所示 { "config": { "vendor-dir": "libs/vendor" }, "require": { "raven/raven": "0.7.1", "monolog/monolog": "1.7.*", "smar

我是作曲家的新手,我正在尝试通过作曲家更新安装以下库

https://github.com/neitanod/forceutf8
据我所知,我的composer.json如下所示

{
    "config": {
        "vendor-dir": "libs/vendor"
    },
    "require": {
        "raven/raven": "0.7.1",
        "monolog/monolog": "1.7.*",
        "smarty/smarty": "3.1.16",
        "forceutf8/forceutf8": "master"
    }
}
由于某种原因(因为我认为forceutf8没有版本),它会因错误而停止,其余的都安装正确,我得到的错误是

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package forceutf8/forceutf8 could not be found in any version, there may be a typo in the package na
me.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 
问题是它必须是

"neitanod/forceutf8": "dev-master"
不是

在composer.json中:


首先,您的名字不正确:
forceutf8/forceutf8
正确的名字是:
neitanod/forceutf8

Composer为每个看起来不像版本号的分支名称添加前缀“dev-”,并为看起来像版本号的分支名称添加后缀“-dev”

示例:分支“master”称为“dev master”,分支“feature”称为“dev feature”。分支“1.0.x”称为“1.0.x-dev”

所以这部分是错误的:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "forceutf8/forceutf8": "master"
}
正确的版本是:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "dev-master"
}
现在需要没有标记版本的分支并不是最好的选择,因为这些信息非常不稳定——任何新的提交都可能破坏东西,而且要准确地指出您想要使用的提交并不容易。为了保护您,Composer默认情况下不会加载这些开发分支,而是只加载稳定版本。您必须启用加载开发版本:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "dev-master@dev"
}
“@dev”标志允许加载所述版本的开发版本(在本例中为分支,但为“1.0”)。0@dev“将以同样的方式工作,允许所有(包括开发人员)版本的1.0.0,如“1.0.0-alpha”,但也允许稳定的“1.0.0”)


注意,您也可以通过使用“最小稳定性”来允许所有依赖项的开发版本,但不建议这样做,因为它将根据版本要求加载所有依赖项的开发版本。在您的情况下,您只需要获取monolog 1.7分支的最新开发版本,但这可能足以使曾经稳定的软件进入崩溃状态。

您必须在composer.json文件中指定版本名称。 只需在以下位置查找可使用Composer安装的任何软件包:

在那里搜索包名,您将找到版本名。
下面是您想要的软件包的链接:

很简单!您应该在控制台上键入:

composer require blablabla@thepackage dev-master

你能把完整的json文件和其他软件包一起添加吗?我试着添加了这个文件,但是没有得到所需的文件格式。forceutf8软件在哪里?对不起,我忘了在require中添加'forceutf8'。已修复但仍不起作用我遇到问题1-在任何版本中都找不到请求的包forceutf8/forceutf8,包中可能有一个拼写错误。在require中写“neitanod/forceutf8”:“开发主机”而不是“forceutf8/forceutf8”:“开发主机”但是这不能识别git url?我假设这个包是在上注册的,但目前该站点似乎已关闭。因此,您将无法更新任何内容。非常感谢您的解释:“Composer为每个看起来不像版本号的分支名称添加前缀“dev-”,为看起来像版本号的分支名称添加后缀“-dev”。“我鄙视Composer中的这种语法。”。
"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "dev-master"
}
"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "dev-master@dev"
}
composer require blablabla@thepackage dev-master