首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Satis,如何归档需要的依赖关系?

Satis,如何归档需要的依赖关系?
EN

Stack Overflow用户
提问于 2016-01-25 15:17:12
回答 3查看 2.2K关注 0票数 3

我正在尝试为我所有的composer包设置我自己的satis服务器。许多包都依赖于phpunit或phpmd。我想在我的满足感中创建所有这些依赖项的归档。但是satis只从给定的存储库创建存档,并且不包括依赖项。

你知道我怎么解决这个问题吗?

这是我的satis.json

代码语言:javascript
复制
{
  "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
  }
}
EN

回答 3

Stack Overflow用户

发布于 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

  • Set、require-dev-dependencies: true)

  • Add Packagist )作为存储库源(Satis通过default)

  • Disable
  1. require-dependencies: true禁用packagist.org require-all标志
  2. 需要您自己的所有软件包,以避免Satis切换到»require«require-dependencies: true

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

代码语言:javascript
复制
{
  "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时提高内存限制,如下所示:

代码语言:javascript
复制
php -d memory_limit=2GB ./bin/satis build satis.json web

B)安装两个Satis实例-一个是您自己的软件包,另一个是镜像所有依赖项

如果你的存储库中有很多包,但只有几个依赖项,那么这个方法将为你节省一些写下需求的时间(例如:你的公司中有100个包,但只有5个依赖于第三方包)。

全部添加您的repository

  • Set»-
  1. «以获取存储库中的所有包版本

此satis.json应如下所示:

代码语言:javascript
复制
{
  "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

  • Add包列表镜像为repository

  • Require所有所需的从属包
  1. 添加另一个Satis.json以镜像

此satis.json应如下所示:

代码语言:javascript
复制
{
  "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

票数 2
EN

Stack Overflow用户

发布于 2016-01-26 17:59:00

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

代码语言:javascript
复制
grep "\"name\":.*/.*" composer.lock 
票数 1
EN

Stack Overflow用户

发布于 2016-01-26 17:50:22

当Satis搜索包时,它会尝试从列出的存储库中解析所有需要的包。只需在您的satis.json中分别定义它们。

(也可能是一个错误,因为手动定义依赖项很繁琐,而且会破坏require-dependencies指令。考虑在Satis问题跟踪器上报告它。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34987032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档