我正在尝试为我所有的composer包设置我自己的satis服务器。许多包都依赖于phpunit或phpmd。我想在我的满足感中创建所有这些依赖项的归档。但是satis只从给定的存储库创建存档,并且不包括依赖项。
你知道我怎么解决这个问题吗?
这是我的satis.json
{
"name": "My satis repository",
"homepage": "http://satis.example.com",
"repositories": [
{
"url": "git@github.com:<user>/<repository>.git",
"type": "vcs"
}
],
"require-all": true,
"require-dependencies": true,
"require-dev-dependencies": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}发布于 2017-06-13 18:56:23
没有简单的方法来获取具有Satis的私有存储库的所有包版本,并镜像所有依赖项。
这是因为,在某个时刻,镜像最终会尝试获取Packagist的全部内容。
要在Satis中镜像包的所有依赖项,您可以在两种不同的方法之间进行选择:
A)添加存储库源并要求 all own
默认情况下,Satis禁用与Packagist的连接。所以你必须添加Packagist作为仓库。如果您在不需要包的特定版本的情况下添加存储库,那么Satis将切换到»requires all«模式(“No explicit defined,enabling requires all”)。然后,这将尝试获取存储库的所有包版本以及Packagist上的所有包版本。轰隆隆。这将失败。因此需要特定的包来防止»require all«模式。
添加需要依赖项( repository
require-dev-dependencies: true)
require-dependencies: true禁用packagist.org require-all标志require-dependencies: true所以你的satis.json应该是这样的:
{
"name": "My satis repository",
"homepage": "http://satis.example.com",
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.org/"
},
"my-repo": {
"url": "git@github.com:<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
顺便说一句:从多个存储库中获取所有这些依赖项可能会导致内存限制错误。Composer suggests在运行Satis时提高内存限制,如下所示:
php -d memory_limit=2GB ./bin/satis build satis.json webB)安装两个Satis实例-一个是您自己的软件包,另一个是镜像所有依赖项
如果你的存储库中有很多包,但只有几个依赖项,那么这个方法将为你节省一些写下需求的时间(例如:你的公司中有100个包,但只有5个依赖于第三方包)。
全部添加您的repository
此satis.json应如下所示:
{
"name": "My package repository",
"homepage": "http://packages.example.com",
"repositories": {
"my-repo": {
"url": "git@github.com:<user>/<repository>.git",
"type": "vcs"
}
},
"require-all": true,
"archive": {
"directory": "dist",
"format": "zip",
"skip-dev": true
}
}这不会获取依赖项。这些需要手动添加到另一个Satis实例中。
仅将所有dependencies
此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
发布于 2016-01-26 17:59:00
您可以列出composer.lock中的所有包(包括嵌套依赖项):
grep "\"name\":.*/.*" composer.lock 发布于 2016-01-26 17:50:22
当Satis搜索包时,它会尝试从列出的存储库中解析所有需要的包。只需在您的satis.json中分别定义它们。
(也可能是一个错误,因为手动定义依赖项很繁琐,而且会破坏require-dependencies指令。考虑在Satis问题跟踪器上报告它。)
https://stackoverflow.com/questions/34987032
复制相似问题