2016-01-25 24 views
1

我正在尝试为我所有的作曲家软件包建立我自己的satis服务器。许多软件包对phpunit或phpmd等有依赖性。我想在我满意的情况下创建所有这些依赖关系的档案。但只能从给定的存储库创建存档并且不包括依赖关系。Satis,如何归档需要依赖关系?

任何想法如何解决这个问题?

这里是我的satis.json

{ 
    "name": "My satis repository", 
    "homepage": "http://satis.example.com", 
    "repositories": [ 
    { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    ], 
    "require-all": true, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

回答

0

当赛帝搜索包它试图从上市库解决所有需要的软件包。只需在satis.json中单独定义它们即可。

(也可能是一个错误,因为手动定义的依赖关系是繁琐和击败require-dependencies指令。考虑在赛帝问题跟踪报告一下。)

0

您可以列出所有包(包括嵌套依赖) composer.lock

grep "\"name\":.*/.*" composer.lock 
0

有没有简单的方法来获取与赛帝的私人仓库的所有包版本和镜像所有的依赖关系为好。

这是由于这样的事实,即在某一点上镜会最终要的Packagist全部内容抓取。

要反映在赛帝的包都依赖你可以在两种不同方法之间做出决定:

A)添加存储库来源,并要求所有自己的包

赛帝有Packagist通过禁用连接默认。所以你必须添加Packagist作为存储库。如果您添加存储库而不需要特定版本的软件包,则Satis将切换到“全部需求”模式(“无需明确要求定义,启用要求全部”)。然后,这将尝试在Packagist上获取全部存储库的版本和全部包版本。繁荣。这将失败。因此需要特定的软件包来防止“全部需要”模式。

  1. 添加您的仓库
  2. 设置需要依赖(require-dependencies: truerequire-dev-dependencies: true
  3. 添加Packagist作为仓库源(赛帝禁用packagist.org默认)
  4. 禁用require-all标志
  5. 要求所有的自己的包,以避免赛帝切换到»要求,所有«模式

所以你satis.json应该是这样的:

{ 
    "name": "My satis repository", 
    "homepage": "http://satis.example.com", 
    "repositories": { 
    "packagist": { 
     "type": "composer", 
     "url": "https://packagist.org/" 
    }, 
    "my-repo": { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    }, 
    "require": { 
    "mycompany/package-foo": "^1.1", 
    "mycompany/package-bar": "*" 
    }, 
    "require-all": false, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

来源:https://github.com/composer/satis/issues/296

BTW:从多个仓库抓取所有这些依赖可能导致内存限制错误。Composer suggests像这样跑赛帝时提高内存限制:

php -d memory_limit=2GB ./bin/satis build satis.json web 

B)安装两个赛帝实例 - 四位一体的你自己的包,一个镜像所有依赖

如果你有很多包在您的存储库中,但只有一些依赖项,那么这个评估将为您节省一些时间来记录需求(例如,公司中的100个包,但仅包含5个与第三方包的依赖关系)。

  1. 添加您的仓库
  2. 集»要求,所有«在你的仓库,以获取所有包版本

这satis.json应该是这样的:

{ 
    "name": "My package repository", 
    "homepage": "http://packages.example.com", 
    "repositories": { 
    "my-repo": { 
     "url": "[email protected]:<user>/<repository>.git", 
     "type": "vcs" 
    } 
    }, 
    "require-all": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

这不会获取依赖关系。这些需要在另一个Satis实例中手动添加。

  1. 添加另一个Satis.json镜像所有依赖
  2. 添加Packagist作为仓库
  3. 要求所有所需依赖软件包只

这satis.json应该是这样的:

{ 
    "name": "My mirror repository", 
    "homepage": "http://mirror.example.com", 
    "repositories": { 
    "packagist": { 
     "type": "composer", 
     "url": "https://packagist.org/" 
    } 
    }, 
    "require": { 
    "acme/some-package-foo": "*", 
    "johndoe/some-package-bar": "*" 
    }, 
    "require-all": false, 
    "require-dependencies": true, 
    "require-dev-dependencies": true, 
    "archive": { 
    "directory": "dist", 
    "format": "zip", 
    "skip-dev": true 
    } 
} 

请注意,镜像全部依赖关系需要很长很长的时间。

来源:http://tech.m6web.fr/composer-installation-without-github.html