composer没有“离线下载器”,所谓离线安装本质是提前下载dist包至缓存并配合composer_disable_network=1强制读取;必须用--prefer-dist触发完整缓存写入,打包整个~/.composer/cache/files目录,离线机需先clear-cache再解压还原路径,并设环境变量后执行composer install。

离线下载器根本不存在,别被名字误导
Composer 没有叫“离线下载器”的组件或插件。所谓“离线下载”,本质是提前把所有 .tar.gz 或 .zip 包拉下来、存本地、再让 composer install 从缓存或指定路径读取——它不改 Composer 本身,只控制输入源和执行行为。
预拉取资源包必须用 --prefer-dist + 缓存目录打包
在联网机上执行这组命令,才能确保所有依赖(含子依赖)真正落盘到缓存:
-
composer install --no-dev --prefer-dist:强制走 dist 包(不是 git clone),触发完整缓存写入 -
ls ~/.composer/cache/files/:确认目录下有 vendor/name/version-hash/ 子目录,且含.zip或.tar.gz文件 -
tar -czf deps.tgz ~/.composer/cache/files/:打包整个files/目录,不能只打里面的包(结构层级必须保留)
注意:--prefer-dist 不是可选参数——如果项目里某个包的 composer.json 写了 "source": {...} 或用了 dev-master,它仍会尝试 git clone,导致缓存缺失。这种包必须先改 composer.json 锁死为稳定版本号再拉。
目标机解压后必须清缓存并验证路径
在离线机上操作顺序不能错:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先运行
composer clear-cache:避免 Composer 误读旧缓存索引 - 再解压:
tar -xzf deps.tgz -C ~:必须解到用户家目录根路径,保证~/.composer/cache/files/完整还原 - 最后执行:
composer install --no-interaction --no-plugins --no-scripts --optimize-autoloader
常见错误:解压到 /tmp 或手动挪文件进 files/,结果 Composer 找不到对应哈希路径;或者忘了 clear-cache,它仍去查空的缓存索引,然后报 Could not fetch。
为什么 COMPOSER_DISABLE_NETWORK=1 是硬性开关
这个环境变量不是“建议开启”,而是 composer install 进入纯离线模式的唯一闸门。不设它,哪怕你已断网、vendor 已存在、缓存已就位,Composer 仍会在校验阶段尝试 DNS 查询或连接 repo.packagist.org,直接失败。
必须在执行前设置:
-
export COMPOSER_DISABLE_NETWORK=1(Linux/macOS) -
set COMPOSER_DISABLE_NETWORK=1(Windows CMD)
漏掉这一步,其他所有参数(--no-plugins 等)都无效。而且它必须是 shell 级环境变量,写在 composer.json 或配置项里不起作用。










