【问题标题】:Using --prefer-dist with Composer will result in not found, The source however can be found在 Composer 中使用 --prefer-dist 会导致找不到,但是可以找到源
【发布时间】:2016-12-19 19:32:31
【问题描述】:

我正在研究如何将 Composer 用于我自己的项目依赖项。我有一些 私有 GitHub 存储库,需要包含在我的项目中。

假设我们有

  • A - 主要项目
  • B - 依赖关系
  • C - 依赖2

现在这是 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 密钥。这似乎有效,因为可以下载源代码。然而,我很惊讶我无法获得 zip 包。谁能指出我正确的方向?

你好,

【问题讨论】:

  • 私有存储库问题对于我们 Composer 维护人员来说非常难以调试,因为我们根本看不到出了什么问题。我自己也没有任何私人存储库,因此我无法复制您的情况。你可以尝试在最详细的状态下运行(-vvv),看看是否得到更有意义的输出?
  • 正在下载api.github.com/repos/vendor/package/zipball/… 下载:失败失败:[Composer\Downloader\TransportException] 404:无法下载“api.github.com/repos/vendor/package/zipball/4e294157a40f”文件(HTTP/1.1 404 Not Found)无法下载供应商/来自 dist 的包:无法下载“api.github.com/repos/vendor/package/zipball/…”文件(HTTP/1.1 404 Not Found)下载源 - 安装供应商/包(1.0.0)
  • 这真的是我的全部。

标签: php github ssh composer-php


【解决方案1】:

由于某种原因,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>

请让我知道这些方法中的哪一种可以为您解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 2020-02-11
    • 2015-04-12
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多