“could not find package”主因是私有仓库认证失败导致元数据拉取中断,需先确认是否访问私有源、检查github pat配置及权限、验证ssh连通性、排查auth.json覆盖或ci拦截,并手动curl验证响应码而非盲目换源。

报“Could not find package”且含 GitHub 认证错误
这不是包真不存在,而是 Composer 尝试访问私有仓库时被拒,导致元数据拉取失败,进而让整个包“不可见”。错误常伴随 401 Unauthorized 或 Authentication failed 提示,但最终表现为找不到包。
先确认是否在访问私有仓库:检查 composer.json 里的 repositories 字段,或运行 composer show -p vendor/name 看是否返回空——若 Packagist 页面能打开该包,本地却查不到,基本就是认证卡在了源头。
- GitHub 已停用密码登录,必须用 Personal Access Token(PAT),且权限至少勾选
repo - 全局配置命令是
composer config --global github-oauth.github.com <your-token></your-token>,注意域名是github.com,不是api.github.com或带 www - 如果项目级
auth.json存在,它会覆盖全局配置;删掉项目根目录下的auth.json再试,避免旧 token 干扰 - HTTPS 方式下 URL 必须写成
https://github.com/username/repo.git,不能是网页地址(https://github.com/.../tree/main)或 SSH 格式(git@...)
SSH 方式认证失败但提示“package not found”
SSH 认证失败不会直接报“Permission denied”,而是静默 fallback 到 HTTPS,再因无凭证触发 401,最终归为“找不到包”。所以看到“not found”别急着换源,先验证 SSH 连通性。
运行 ssh -T git@github.com —— 如果返回 Hi username! You've successfully authenticated,说明密钥和 GitHub 配置都对;若提示 Permission denied (publickey),问题就在这里。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 确保
~/.ssh/id_ed25519(或对应私钥)存在且权限为600:chmod 600 ~/.ssh/id_* - 确保
composer.json中仓库 URL 是git@github.com:username/repo.git,且"type": "vcs"明确写出 - 不要混用:一个项目里同时配 HTTPS 和 SSH 仓库,容易让 Composer 在重试时乱跳协议
- CI 环境(如 GitHub Actions)需显式注入 SSH 私钥,并用
ssh-add加载,不能只靠known_hosts
私有 Packagist 镜像返回 404 而非 401
某些企业私有镜像(如 Satis、Private Packagist)配置了权限白名单,未授权用户请求包时直接返回 404,而非标准 401。这会让 Composer 误判为“包不存在”,绕过认证流程。
验证方式:手动 curl -I -u user:token https://your-private-mirror.com/packages.json,看响应头是否含 HTTP/2 401;若返回 404,说明镜像服务端做了权限隐藏。
- 联系运维确认该用户是否在镜像的可访问包列表中
- 临时改用直连原始 Git 仓库(
"type": "vcs"+"url": "https://..."),绕过镜像层 - 若必须走镜像,且镜像支持 Basic Auth,可在 URL 中嵌入凭证:
https://user:token@your-private-mirror.com(不推荐长期使用) - 检查镜像是否启用了
require-sig或强制 TLS 客户端证书,这类配置不会出现在 Composer 错误里,但会静默拦截
auth.json 权限泄露导致 CI 拒绝执行
有些 CI 平台(如 GitLab CI)扫描到项目中存在 auth.json 文件,会直接终止 job 并报“package not found”,实际是安全策略拦截,不是网络或认证问题。
错误特征:本地 composer install 正常,CI 日志里却突然中断,且无明显 HTTP 错误;检查 CI 的 artifact 或日志关键词,常含 auth.json detected 或 credentials leak risk。
- 立刻将
auth.json加入.gitignore,并从 git 历史中彻底删除:git filter-repo --path auth.json --invert-paths - CI 中改用环境变量注入:
COMPOSER_AUTH='{"github-oauth": {"github.com": "xxx"}}' - GitHub Actions 可用
secrets.GITHUB_TOKEN自动注入,无需额外配置 PAT - 私有镜像若支持 OAuth2,优先用 OIDC 方式获取短期 token,比硬编码更安全也更易通过 CI 审计










