2016-10-27 26 views
0

我有幾個包。一個取決於其他兩個提供的虛擬包。爲了簡單起見,我只關注packageA(需要虛擬化的包)和packageB(提供虛擬化的一個包)。mynamespace/packageA 1.0.x-dev需要mynamespace/package-virtual 1.0 - >找不到匹配的包

程序包A

{ 
    "require": { 
     "mynamespace/package-virtual": "1.0" 
    }, 
    "suggest": { 
     "mynamespace/packageB": "PackageB provides package-virtual", 
     "mynamespace/packageC": "PackageC also provides package-virtual and can be installed with or without PackageB being present" 
    }, 
    "minimum-stability": "dev" 
} 

PackageB

{ 
    "provide": { 
     "mynamespace/package-virtual": "1.0" 
    }, 
    "minimum-stability": "dev" 
} 

這一切都工作得很好,而我用DEV-大師爲我的應用程序,使用這兩個包的兩個packges要求:

使用dev-master的MyAPP

{ 
    "require": { 
     "mynamespace/packageA": "dev-master", 
     "mynamespace/packageB": "dev-master" 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

然而,當我標記1.0.0-RC1上的每個包和試圖改變我的dev要求1.0.X-dev的作曲家就開始抱怨,使用它找不到mynamespace/package-virtual

MYAPP 1.0.x的-dev的

{ 
    "require": { 
     "mynamespace/packageA": "1.0.x-dev", 
     "mynamespace/packageB": "1.0.x-dev" 
    }, 
    "minimum-stability": "dev", 
    "prefer-stable": true 
} 

運行作曲家更新

# composer update 
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 
    - Installation request for mynamespace/packageA 1.0.x-dev -> satisfiable by mynamespace/packageA[1.0.x-dev]. 
    - mynamespace/packageA 1.0.x-dev requires mynamespace/package-virtual 1.0 -> no matching package found. 

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://getcomposer.org/doc/04-schema.md#minimum-stability> for more details. 

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 

事情我已經嘗試

  • 改變需要myNameSpace對象/線包的虛擬到^ 1.0 myNameSpace對象/程序包A
  • 改變需要線myNameSpace對象/包虛擬〜1.0 *在myNameSpace對象/程序包A
  • 更改爲myNameSpace對象/提供線包的虛擬到1 *在myNameSpace對象/ packageB

爲什麼我使用虛擬而不僅僅是要求包B

因爲packageB只是虛擬包的可能實現。可能會使用packageC或其他一些軟件包。

爲什麼我不能用內容替換,而不是提供

因爲packageB和packageC可能都實現虛擬包和並存。 MyAPP可能選擇在某些情況下使用packageB,在其他情況下使用packageC。將所有這些與日誌包進行比較。 psr/log提供了日誌記錄的接口,但是您必須安裝一個或多個日誌記錄實現才能將其實際用於日誌記錄。許多不同的記錄器都實現了必要的接口,並且可以同時安裝,從而允許應用程序爲用戶提供一系列使用的記錄服務。

爲什麼我提供psuedo代碼而不是實際的作曲家。json文件

因爲我正在使用的代碼目前不公開。在某些時候,它可能是,但它現在不是

如果代碼不公開安裝,你如何通過作曲家安裝?

我正在Toran Proxy本地

問題

我在做什麼錯?爲什麼在dev-master下這一切都可以正常工作,但是一旦我爲RC添加標籤並移動到版本分支,就會出現故障。

回答

0

所以我不確定這是否是實際的答案,但如果在清除供應商的mynamspace目錄後運行composer install而不是composer update,則一切正常。

我也發現使用Satis而不是Toran似乎也可以很好地與composer update一起工作。

相關問題