You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Composer Satis构建时无法更新包的问题求助

我来帮你排查这个问题,这种情况我在维护私有Composer仓库时遇到过好几次,大概率是缓存没清干净或者Satis的元数据生成不到位导致的,咱们一步步来解决:

第一步:先清安装服务器的Composer缓存

你说安装包的服务器上没拿到新包,首先要考虑Composer的本地缓存——它会把仓库的元数据存在本地,哪怕Satis已经更新了,服务器还抱着旧缓存不肯放。直接执行这条命令清缓存:

composer clear-cache

清完之后,试试指定新版本安装(比如新标签是v1.2.0):

composer require your/vendor/package:^1.2.0

或者直接更新:

composer update your/vendor/package
第二步:确认Satis真的生成了正确的元数据

你说Satis“似乎获取到新包”,别光靠感觉,直接去Satis的web目录里查具体文件:
找到对应包的元数据文件,比如/path/to/satis/web/packages/your/vendor/package.json,打开看看里面有没有新标签对应的版本条目。如果没有,说明Satis更新时没抓到新标签,这时候重新运行Satis的build命令,一定要加--no-cache跳过它自己的缓存:

php satis/bin/satis build satis.json /path/to/satis/web --no-cache

另外,检查你的satis.json配置,对应Git仓库有没有开启抓取标签的选项,要是没开,Satis根本不会理新标签:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "git@your-git-repo.com:your/vendor/package.git",
      "options": {
        "tags": true
      }
    }
  ]
}
第三步:解决composer search出现两个同名包的问题

这个情况要么是Composer缓存了旧的仓库索引,要么是Satis的根packages.json里有重复的包条目。先执行第一步的清缓存命令,要是还存在,就去Satis web目录的根packages.json里搜你的包名,看看是不是不小心在satis.json里加了两次同一个Git仓库?如果是,删掉重复的配置,重新build Satis就行。

第四步:检查安装服务器的Composer源配置

要是你的包名和Packagist上的包重名了,Composer会从多个源拉取,自然会出现两个同名包。这时候要在安装服务器的composer.json里指定你的包只能从Satis仓库获取,甚至可以禁用Packagist:

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://your-satis-domain.com"
    },
    {
      "packagist": false
    }
  ],
  "require": {
    "your/vendor/package": "*"
  }
}

按这个顺序排查下来,基本能解决绝大多数Satis更新不同步的问题。如果还是不行,看看Satis执行build命令时有没有报错——比如Git权限不够拉取不到新标签,或者网络问题导致Satis没同步到Git仓库的最新内容。

内容的提问来源于stack exchange,提问作者Fabb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:07:33