You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用GitHub克隆尝试,仅从Packagist下载?解决私有仓库更新失败

问题

我正在使用一个内部仓库,该仓库连接至packagist.org。但有时运行update命令时,Composer会先尝试从GitHub克隆部分更新包,由于无法访问GitHub网络,该尝试失败并提示:

Failed to download vendor/package from dist: curl error 28 while downloading from "some.GitHub.url"
Now trying to download from source

而从GitHub下载的尝试耗时极长。我如何跳过该步骤,直接让Composer从源(我原本以为是Packagist)下载?

更新:我之前的理解有误,这里的"source"并非Packagist,它仍然尝试从GitHub的"source"克隆,因此再次失败,第二次失败提示如下:

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos

这是什么意思?更新Laravel必须使用GitHub SSH密钥吗?有没有办法仅通过Packagist完成更新?

解决方案

1. 强制Composer优先使用dist包(跳过GitHub源克隆)

Composer中的dist指的是Packagist提供的预打包压缩包,不需要访问GitHub仓库。你可以通过以下方式强制优先使用dist:

  • 单次命令使用:
    composer update --prefer-dist
    
    若无需安装开发依赖,可添加--no-dev提升速度:
    composer update --prefer-dist --no-dev
    
  • 项目/全局持久配置:
    在项目的composer.json中添加配置,永久设置优先安装dist包:
    {
        "config": {
            "preferred-install": "dist"
        }
    }
    
    执行composer config --global preferred-install dist可设置为全局生效。

2. 确认内部仓库配置正确性

确保你的内部仓库已正确同步Packagist的所有dist包资源,并且在composer.json中优先级高于GitHub:
检查项目的composer.json的repositories配置,确保内部仓库被列为优先源:

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://你的内部仓库地址"
        },
        {
            "type": "composer",
            "url": "https://packagist.org",
            "exclude": ["*/*"]
        }
    ]
}

这样Composer会优先从内部仓库拉取包,仅当内部仓库无对应资源时才会访问Packagist。

3. 关于GitHub凭证提示的说明

更新Laravel不需要强制使用GitHub SSH密钥。该提示是因为Composer尝试拉取source(即Git仓库)时,网络不通导致权限验证误判,或是部分依赖包的source地址指向了私有GitHub仓库。只要你能通过内部仓库或Packagist获取到dist包,就完全不需要GitHub凭证。

4. 禁止Composer使用source源

若上述方法仍有问题,可直接禁止Composer从source安装,确保仅使用dist包:

composer update --prefer-dist --no-source

此命令下如果dist包不可用,Composer会直接报错,不会尝试去GitHub克隆。

内容的提问来源于stack exchange,提问作者pileup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:27:37