必须删除composer.lock、vendor/composer/installed.json和~/.composer/cache/repo/https---packagist.org/三处,否则composer仍按旧锁版本解析依赖,不拉新元数据;仅运行composer clear-cache无效。

为什么 composer clear-cache 后还是装不到新版包
因为 composer clear-cache 只删了 ~/.composer/cache/files/ 和 repo/ 下的旧文件,但 Composer 仍会复用 vendor/composer/installed.json 和 composer.lock 中锁定的版本信息,根本不会去拉新 metadata。尤其当 Packagist 已发布 v3.2.0,而你的 composer.lock 里还写着 "version": "3.1.0",它连远程都不查。
-
composer.lock必须删——它是硬性版本锁,不清就永远不更新 -
vendor/composer/installed.json必须删——它缓存当前安装快照,影响composer show和依赖解析逻辑 -
~/.composer/cache/repo/https---packagist.org/要手动清——clear-cache有时跳过这个目录,尤其在自定义镜像或权限异常时
清理三处关键位置的实操命令
别只跑一遍 composer clear-cache 就以为完事。按顺序执行以下操作(Linux/macOS):
composer clear-cacherm -rf ~/.composer/cache/repo/https---packagist.org/rm -f vendor/composer/installed.jsonrm -f composer.lock-
composer update --dry-run -v—— 观察是否出现Downloading https://packagist.org/packages.json,有才说明 metadata 真重拉了
Windows 用户注意:%APPDATA%\Composer\Cache\repo\https---packagist.org\ 要手动进资源管理器删;installed.json 在 vendor\composer\ 下,不是 vendor\ 根目录。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
删错地方反而更卡:哪些不能碰
有人一急就 rm -rf ~/.composer/cache,结果发现下次 composer install 卡在 Cloning into '/home/user/.composer/cache/vcs/https---github.com-xxx.git/' —— 这是因为 vcs/ 缓存被清空后,Composer 得重新 clone 整个 Git 仓库,比下 ZIP 还慢。
- 别碰
~/.composer/cache/vcs/—— 它不影响版本更新逻辑,只影响首次拉私有包速度 - 别只删
composer.lock却留着vendor/——vendor/里的旧代码和新 lock 文件冲突,composer update会报Root package requires ... but it is not present - 别信“删
vendor/就够了”——没清installed.json,composer show仍显示旧版,你以为更新成功了,其实只是假象
验证是否真刷新了 metadata
运行 composer update --dry-run -v 后紧盯输出末尾几行:
- 看到
Downloading https://mirrors.aliyun.com/composer/packages.json→ 成功触发远程拉取 - 看到
Writing /home/user/.composer/cache/repo/https---mirrors-aliyun-com/packages.json→ metadata 已写入缓存 - 没看到
Downloading,却直接跳到Resolving dependencies through SAT→ 说明还在读本地旧快照,清理不到位
真正容易被忽略的是 installed.json:它不显眼、不报错,但只要存在,Composer 就默认“已知当前状态”,跳过远端比对。很多团队 CI 脚本漏掉这一步,导致每次构建都看似成功,实则版本冻结半年不动。










