2014-02-11 73 views
9

我是新来的作曲家,我试图通过作曲家更新,因为我明白我的作曲家安装此以下的lib如何使用作曲家没有版本(仅主机)

https://github.com/neitanod/forceutf8 

所以安装包以.json看起来像这样

{ 
    "config": { 
     "vendor-dir": "libs/vendor" 
    }, 
    "require": { 
     "raven/raven": "0.7.1", 
     "monolog/monolog": "1.7.*", 
     "smarty/smarty": "3.1.16", 
     "forceutf8/forceutf8": "master" 
    } 
} 

的Bt出于某种原因(因为我认为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. 

我尝试以下的版本还,但没有运气还是

{ 
    "config": { 
     "vendor-dir": "libs/vendor" 
    }, 
    "name": "career/skillquest", 
    "repositories": [ 
     { 
     "type": "vcs", 
     "url": "https://github.com/neitanod/forceutf8" 
     } 
    ], 
    "require": 
     { 
     "forceutf8/forceutf8": "dev-master", 
     "raven/raven": "0.7.1", 
     "monolog/monolog": "1.7.*", 
     "smarty/smarty": "3.1.16" 
     } 
} 

问题是它需要

"neitanod/forceutf8": "dev-master" 

"forceutf8/forceutf8": "dev-master" 

回答

18

composer.json

{ 
    "name": "example/example-app", 
    "repositories": [ 
     { 
     "type": "vcs", 
     "url": "https://github.com/neitanod/forceutf8" 
     } 
    ], 
    "require": 
     { 
     "neitanod/forceutf8": "dev-master", 
     "raven/raven": "0.7.1", 
     "monolog/monolog": "1.7.*", 
     "smarty/smarty": "3.1.16" 
     } 
} 
+0

你能请与其它包添加完整JSON文件,我试图加入这个,但未能获得所需要的文件格式 – mahen3d

+0

改变答案。 –

+0

forceutf8软件在哪里? – Sven

16

首先,你打错名字:forceutf8/forceutf8正确名称是:neitanod/forceutf8

作曲家增加了“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": "[email protected]" 
} 

的“@dev”标志允许加载提及的版本(在这种情况下是分支开发版本,但“[email protected]”将工作同样的方式,允许1.0.0的所有(包括dev)版本,比如“1.0.0-alpha”,还有稳定的“1.0.0”)。

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

+0

但这个doenst认识到git url? – mahen3d

+0

我假设该软件包已在http://packagist.org上注册,但目前该网站似乎已停用。所以你没有更新任何运气的运气。 – Sven

+1

非常感谢您解释这一点:'Composer为每个不像版本号的分支名称添加前缀“dev-”,后缀名称为“-dev”以表示版本号。 “我在Composer中鄙视这个语法。 – user3751385

0

很简单!你应该输入在控制台上:

composer require [email protected] dev-master