使用--prefer-dist与Composer将导致找不到,但是可以找到源

时间:2016-08-12 17:51:55

标签: php github ssh composer-php

我正在弄清楚如何将Composer用于我自己的项目依赖项。我有一些私有 GitHub回购,我需要包含在我的项目中。

让我们说

  • A - 主项目
  • B - 依赖
  • C - Dependency2

现在这是A:中的JSON:

{
  "name": "vendor/package",
  "version": "1.0.0",
  "require": {
    "vendor/package" : "1.0.0",
    "vendor/package2" : "1.0.0"
  },
  "repositories": [
    {
      "type": "vcs",
      "url": "git@github.com:vendor/package.git"
    },
    {
      "type": "vcs",
      "url": "git@github.com:vendor/package2.git"
    }
  ]
}

这是B的包(C与课程非常相似)

{
  "name": "vendor/package1",
  "version": "1.0.0"
}

现在,如果我运行以下命令:

composer install -n --prefer-dist

发生以下错误:

  - Installing vendor/package (1.0.0)
    Downloading: Failed       
    Failed to download vendor/package from dist: The "https://api.github.com/repos/vendor/package/zipball/419f5056bde4ff7d76a099648e60fc" file could not be downloaded (HTTP/1.1 404 Not Found)
    Now trying to download from source
  - Installing vendor/package (1.0.0)
    Cloning 419f5056bde4ff7d48e60fc

然而,下载源确实有效。我在〜/ .ssh文件夹和Github上安装了SSH密钥。这似乎可以工作,因为可以下载源。然而,我很惊讶我无法获得拉链包装。谁能指出我正确的方向?

映入眼帘,

1 个答案:

答案 0 :(得分:2)

由于某种原因,API调用似乎失败了。您可以尝试通过修改存储库定义来禁用它:

{
  "type": "vcs",
  "url": "git@github.com:vendor/package.git",
  "no-api": true
}

<强>可替换地:

可能对于私有存储库,您需要配置有效的oauth令牌,但由于某种原因,它似乎不会在当前/最新版本的Composer中提示这一点。

要配置oauth令牌,请创建一个@ github.com/settings/tokens,然后将其添加到配置中,如下所示:

composer config -g github-oauth.github.com <oauthtoken>

请让我知道这些方法中的哪一种能为您解决。