Composer报“Package not found”主因是镜像同步延迟(5–30分钟),应先访问https://mirrors.aliyun.com/composer/p/vendor/package.json验证是否404,再对比https://packagist.org/packages/vendor/package确认官网已发布;若切回官方源成功,则证实为镜像延迟。

composer update 报 “Package not found” 怎么确认是镜像延迟?
国内用户最常踩的坑是镜像源没同步新包,不是你配错了,也不是包真没了。Packagist 上刚发布的包,阿里云、腾讯云等镜像通常有 5–30 分钟延迟,高峰期可能更久。
直接验证方式:
把 vendor/package 替换成你要装的包名,打开浏览器访问:https://mirrors.aliyun.com/composer/p/vendor/package-name.json
如果返回 404 或 JSON 里没有目标版本,基本就是镜像还没同步。
同时对比官网:https://packagist.org/packages/vendor/package-name 确认它确实已发布。
命令行快速验证是否镜像问题:composer config --global repo.packagist composer https://packagist.orgcomposer require vendor/package -vvv
成功就说明该切回镜像了;失败则继续排查其他原因。
删缓存前先看清楚:哪些目录必须清,哪些不能乱动
composer clear-cache 本身只清 ~/.composer/cache/files/、repo/、vcs/,但它不强制刷新元数据——所以你执行完还报错,大概率是 repo/ 下的旧 packages.json 还在被读。
真正要手动删的三处是:
-
$(composer config --global cache-dir)/repo/https---packagist.org/(Linux/macOS)或%APPDATA%\Composer\Cache\repo\https---packagist.org\(Windows) vendor/composer/installed.jsoncomposer.lock
注意:vcs/ 可以整删(安全),但 files/ 里删错 ZIP 文件会导致下次 install 失败——尤其当某个项目仍锁着旧版本时,别凭“废弃”印象乱删。
为什么改了 cache-dir 还报 “cache directory does not exist”?
因为 composer config --global cache-dir 只改配置,不自动创建目录。路径不存在时,composer update 直接报错退出,连 fallback 都不给你机会。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
检查步骤:
- 运行
composer config --global cache-dir看输出值 - 立刻验证路径是否存在:
Linux/macOS:ls -ld $(composer config --global cache-dir)
Windows PowerShell:Test-Path "$env:APPDATA\Roaming\Composer\Cache" - 若不存在,手动建 + 赋权:
Linux/macOS:mkdir -p $(composer config --global cache-dir)+chown -R $USER:$USER $(composer config --global cache-dir)
Windows:mkdir "$env:APPDATA\Roaming\Composer\Cache"+icacls "$env:APPDATA\Roaming\Composer\Cache" /grant "$env:USERNAME:(OI)(CI)F" /t
还要防环境变量干扰:echo $COMPOSER_CACHE_DIR(Linux/macOS)或 $env:COMPOSER_CACHE_DIR(PowerShell)
如果它指向一个不存在的路径,unset COMPOSER_CACHE_DIR 或 Remove-Item Env:\COMPOSER_CACHE_DIR 再试。
清理后怎么验证 metadata 真的重拉了?
别信“没报错就算成功”。关键看日志里有没有 Downloading https://packagist.org/packages.json 这一行。
执行:composer update --dry-run -v
如果看到的是:Reading /home/user/.composer/cache/repo/https---packagist.org/packages.json
说明第二步删 repo/ 没到位,还得再清一次。
如果看到的是:Downloading https://packagist.org/packages.jsonWriting /home/user/.composer/cache/repo/https---packagist.org/packages.json into cache
这才算真正刷新了元数据。
最容易被忽略的是:缓存目录存在但权限不对(比如属主是 root),或者 composer.lock 里锁死了旧版本,导致 update 根本不触发下载——这两点不解决,光清缓存毫无意义。

















