“failed to extract”本质是本地zip文件损坏,需精准定位并同步清理缓存zip、vendor/目录及composer.lock文件,同时检查tmpdir空间与repo元数据更新。

“Failed to extract”不是网络问题,是本地 ZIP 文件损坏;盲目 composer clear-cache 往往白忙活,必须精准定位、同步清理三处关键文件。
定位损坏的 ZIP 包而不是清全量缓存
看到 Corrupted zip file: monolog/monolog 或 Failed to extract vendor/symfony/console,说明 ~/.composer/cache/files/(Linux/macOS)或 %APPDATA%\Composer\Cache\Files(Windows)里某个 ZIP 已损坏。Composer 不会跳过或重试,而是直接卡住。
- 盯住
composer install -v输出末尾,找Extracting或Downloading后紧跟着的包名和版本 - 查缓存路径:
composer config --global cache-dir - 进
files/子目录,用包名模糊搜索:ls -l *symfony*console*.zip(Linux/macOS)或Get-ChildItem "$env:APPDATA\Composer\Cache\Files" -Recurse -Filter "*console*.zip"(PowerShell) - 只删匹配的 ZIP 文件,别碰
repo/和vcs/—— 它们不参与解压流程
必须同步清理 vendor/ 和 composer.lock
删完 ZIP 还报错?根源在 composer.lock 里硬编码的 dist.sha256 值。它和当前缓存 ZIP 不匹配,Composer 就拒绝安装。只清缓存、只删 vendor/ 都绕不过这个校验。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先备份:
cp composer.lock composer.lock.bak(Linux/macOS)或copy composer.lock composer.lock.bak(Windows) - 彻底清理:
rm -rf vendor composer.lock或rd /s /q vendor & del composer.lock - 重装时加两个关键参数:
composer install --no-cache --force-checksums——--no-cache跳过本地 ZIP 查找,--force-checksums让校验失败立刻退出,不污染vendor/
磁盘空间不足时,TMPDIR 才是真瓶颈
composer clear-cache 只释放 ~/.composer/cache/ 空间,但解压过程实际发生在系统临时目录(/tmp 或 %TEMP%)。如果那里只剩 100MB,而一个包解压要 800MB,照样报 No space left on device。
- 确认当前临时目录:
echo $TMPDIR(Linux/macOS)或echo %TEMP%(Windows) - 改到大分区:
export TMPDIR="/mnt/bigdisk/tmp"(Linux/macOS)或set TMPDIR=D:\tmp(Windows),并确保目录存在且可写 - 验证是否生效:跑一次
composer install -v,观察日志中解压路径是否已变 - 临时空间紧张时,加轻量参数:
composer install --no-plugins --no-scripts --no-autoloader --no-dev
metadata 更新滞后?光 clear-cache 不够
执行 composer update 拉不到新版本,常因元数据缓存未刷新。Packagist 的 packages.json 快照存在 ~/.composer/cache/repo/https---packagist.org/,而 clear-cache 并不强制重建它。
- 手动删三处:
rm -rf ~/.composer/cache/repo/https---packagist.org/、rm -f vendor/composer/installed.json、rm -f composer.lock - 再跑
composer update,首次会重新下载packages.json - 验证是否重拉:加
--dry-run -v,看到Downloading https://packagist.org/packages.json行才算成功 - 注意:
"minimum-stability": "stable"会屏蔽 RC 版本,这不是缓存问题,是配置限制
真正卡住的时候,错误往往藏在 composer.lock 的哈希值、TMPDIR 的空间、或者 repo/ 下陈旧的 packages.json 里——这些地方不手动碰,clear-cache 再多跑几遍也没用。










