直接运行composer clear-cache无法解决包信息不同步,因其不刷新packages.json元数据、不删除composer.lock和installed.json;必须手动清理这三处:全局repo缓存、vendor/composer/installed.json、composer.lock。

直接运行 composer clear-cache 无法解决包信息不同步问题,真正卡住的是远程元数据缓存和本地锁文件,必须组合清理三处关键位置。
为什么 composer clear-cache 后还是拉不到新版包
因为 composer clear-cache 只删了 ~/.composer/cache/files/ 和 repo/ 下的快照,但不会刷新 Packagist 的主索引 packages.json,也不会动项目里的 composer.lock 和 vendor/composer/installed.json。这些文件共同构成“版本事实”,只要其中任一存在旧记录,Composer 就会跳过远程检查。
-
~/.composer/cache/repo/https---packagist.org/里存着 provider 列表和packages.json,它可能已过期(默认 TTL 24 小时),但clear-cache不强制重拉 -
composer.lock硬编码了每个包的 exact version 和 dist.sha256,哪怕远程已发 v2.1.0,只要 lock 里还是 v2.0.0,install就不会碰新版本 -
vendor/composer/installed.json是当前安装快照,composer show和依赖解析都读它,不删它,update可能误判“已满足”
手动清理三处关键缓存的具体操作
先停掉所有正在运行的 composer 进程(避免文件被锁),再按顺序执行:
- 清元数据缓存:
rm -rf $(composer config --global cache-dir)/repo/https---packagist.org/(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\repo\https---packagist.org"(Windows) - 删本地快照:
rm -f vendor/composer/installed.json(Linux/macOS)或del vendor\composer\installed.json(Windows) - 删锁文件:
rm -f composer.lock(Linux/macOS)或del composer.lock(Windows)——注意:这会让后续update重新解析整棵树,不是所有场景都适用
完成后运行 composer update --dry-run -v,看到 Downloading https://packagist.org/packages.json 才说明元数据已重拉。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
遇到 “Failed to extract” 错误别乱清全量缓存
这类报错本质是某个 ZIP 包损坏(比如下载中断),不是元数据不同步。此时 clear-cache 会删掉所有包,但 Composer 默认仍尝试复用已损坏的缓存副本——它只校验哈希,不重下。
- 盯紧
composer install -v输出末尾,找类似Extracting monolog/monolog或Downloading vendor/symfony/console的行 - 进
$(composer config --global cache-dir)/files/,用包名模糊搜索 ZIP:ls -l *symfony*console*.zip(Linux/macOS) - 只删匹配的 ZIP 文件,别碰
vcs/和repo/—— 它们不参与解压流程 - 删完 ZIP 必须同步删
vendor/和composer.lock,否则dist.sha256校验仍失败
CI/CD 或镜像配置错误时的典型陷阱
很多团队在 GitHub Actions 里加了 composer clear-cache 却发现构建更慢、版本还滞后,根本原因是没确认镜像是否生效,或没处理锁文件残留。
- 先跑
composer config -g repo.packagist,输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}这类国内地址;如果是{"type": "composer", "url": "https://packagist.org"}或空,清缓存毫无意义 - CI 中若复用缓存卷(如 GitHub Actions 的
actions/cache),要确保composer.lock没被旧构建污染,否则install永远走错源 -
--no-cache参数只跳过本地 ZIP,但不会绕过composer.lock的版本锁定,漏掉它就白操作
最常被忽略的是 composer.lock 和镜像配置的联动关系:它里面记录了每个包的 dist.url,如果锁文件生成时用的是 packagist.org,重装时即使镜像已配好,也会优先走旧 URL——除非你删 lock 并明确用 composer update 重建。

















