2015-03-25 63 views
2

我已成功在自己的服務器上設置Satis,並且能夠從中取出軟件包。如何使Satis軟件包依賴項從packagist安裝

但是,這些私有包中所需的相關性不斷被克隆在他們的出血邊緣版本中,而不是指定的版本約束。我認爲Satis正在創建最新開發版的本地鏡像。但我不想擁有本地鏡像,我只需要它們直接從Packagist安裝。

那麼,我該如何設置項目/包/ Satis才能在Packagist安裝的私有包中擁有依賴關係?

謝謝。


這是我賽帝構建文件:

{ 
    "name": "Package Server", 
    "homepage": "http://packages.URL", 
    "repositories": [ 
    { 
     "type": "vcs", 
     "url": "[email protected]:USERNAME/REPO.git", 
     "options": { 
      "ssh2": { 
       "username": "USERNAME", 
       "pubkey_file": "PUBFILE", 
       "privkey_file": "PRIVATEFILE" 
      } 
     } 
    } 
    ], 
    "require-all": true 
} 

這是需要私人包項目的composer.json文件(包沒有標記的版本):

{ 
    "name": "Test Project", 
    "description": "", 
    "require": { 
     "php": ">=5.4.0", 
     "USERNAME/REPO": "*" 
    }, 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://packages.URL" 
     } 
    ], 
    "minimum-stability": "dev" 
} 

這是私人包裝的composer.json:

{ 
    "name": "USERNAME/RPO", 
    "description": "", 
    "require": { 
     "php": ">=5.4.0", 
     "illuminate/support": "5.0.*", 
     "vinkla/hashids": "~1.0" 
    }, 

    "minimum-stability": "dev" 
} 

回答

3

在您的Satis配置中,您定義了"require-all": true。 這是默認值,並選擇您定義的存儲庫中所有軟件包的所有版本。

您可以嘗試刪除"require-all": true,轉而使用require部分。 這意味着賽帝將只包含這些特定的軟件包及其版本,像這樣:

"require": { 
    "company/packageA": "*", 
    "company/packageB": "1.2.3", 
    "company/packageC": "2.0.0" 
} 

它採摘賽帝


包櫻桃所以,如果我理解正確的話,我需要添加然後私人軟件包可以在需求密鑰的指定專用存儲庫中使用,並且它們自己的依賴關係將從Packagist安裝?

添加require-dependencies - 這告訴Satis不僅要鏡像在「require」部分中指定的包,還要鏡像所有依賴項。

https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#resolving-dependencies

是否有可能有一個定義庫居住多個包或不每一個包需要在賽帝自己的資源庫URL輸入?

我認爲在一個"type": "vcs"存儲庫中不可能有多個包。

隨着"type": "composer"和克隆的packagist,你可以存儲多個回購。 想想http://drupal-composer.orghttp://packagist.drupal-composer.org/

{ 
    "repositories": [ 
     { "type": "vcs", "url": "https://github.com/somewhere/packageA" }, 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require": { 
     "package/packageA": "somewhere-dev", 
     "phpunit/phpunit": "*" 
    }, 
    "require-dependencies": true 
} 
+0

因此,如果我理解正確,我需要在指定的私有存儲庫中添加需要密鑰中的私有包,然後他們自己的依賴項將從Packagist安裝? – Propaganistas 2015-03-25 10:53:14

+0

子問題:是否有可能在一個定義的存儲庫中存在多個軟件包,或者是否每個軟件包都需要在Satis中擁有自己的存儲庫URL條目? – Propaganistas 2015-03-25 11:02:37

+0

我已更新我的答案以解決您的問題。 – 2015-03-25 11:17:49

相關問題