2014-02-11 74 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