0

0

composer如何配置Satis构建内部离线源_composer企业级仓库管理【详解】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-12-31 06:13:20

|

903人浏览过

|

来源于php中文网

原创

Satis 是静态包生成器,需配合 Git 仓库、composer.json 和定期构建才能支撑企业级离线源;离线指不依赖 packagist.org,所有包须提前拉取并固化为 dist 归档。

composer如何配置satis构建内部离线源_composer企业级仓库管理【详解】

直接上结论:Satis 不是“配置好就能用”的现成仓库,它本质是一个静态包生成器,必须配合 Git 仓库、composer.json 清单和定期构建流程才能支撑企业级离线源;离线 ≠ 完全断网,而是指不依赖 packagist.org,所有包需提前拉取并固化为 dist 归档。

如何初始化 Satis 配置文件(satis.json)

Satis 的行为完全由 satis.json 驱动,它不是 Composer 的 config.json,也不能用 composer config 生成。必须手写,且关键字段不能遗漏:

  • namehomepage 是必需的,否则生成的 packages.json 缺失元信息,下游 composer install 会报 Could not parse version constraint
  • repositories 列表里每个仓库必须是完整 Git URL(如 https://git.example.com/internal/lib-a.git),不支持本地路径或 SVN
  • require-all 设为 true 可自动抓取所有 tagged 版本;若只想要特定版本,改用 require 对象,例如:{"vendor/package": "1.2.*"}
  • 务必显式设置 archive:它决定是否生成 .zip.tar 离线包,没有它,Satis 只输出 packages.json,下游无法离线安装

构建时必须指定 dist 归档路径与格式

Satis 默认不下载任何代码,只生成元数据。要实现真正离线,必须让 Satis 把每个包的 dist 文件实际下载并存到本地目录。这靠 archive 配置驱动:

{
  "name": "Internal Packagist",
  "homepage": "https://satis.internal",
  "repositories": [
    {"type": "vcs", "url": "https://git.internal/lib-a.git"}
  ],
  "require-all": true,
  "archive": {
    "directory": "dist",
    "format": "zip",
    "skip-dev": true
  }
}

注意:directory 是相对于构建命令执行路径的子目录,不是绝对路径;format 只能是 ziptar,不能用 tgzskip-dev 必须设为 true,否则会尝试归档 dev-master 这类不稳定分支,导致构建失败或体积暴增。

ModelGate
ModelGate

一站式AI模型管理与调用工具

下载

为什么 composer install 仍报 “package not found”?检查这三点

即使 Satis 构建成功,客户端 composer install 仍可能找不到包,常见原因有:

  • 客户端 composer.json 中未正确声明私有源:"repositories": [{"type": "composer", "url": "https://satis.internal/"}],且 url 必须以 / 结尾,否则 packages.json 请求 404
  • Satis 生成的 packages.json 里包名大小写与客户端 require 不一致(如 Satis 抓到 vendor/PackageA,但 composer.json 写了 vendor/packagea),Composer 区分大小写
  • Git 仓库 tag 命名不规范:Satis 只识别符合 semver 的 tag(如 v1.0.01.2.3),release-1.0master 不会被纳入 require-all 范围

离线环境部署的关键细节

所谓“离线”,是指客户端机器无法访问互联网,但 Satis 构建机必须能访问所有 Git 仓库和 GitHub/GitLab(用于下载 dist)。最终交付物只有两个部分:

  • 整个 Satis 输出目录(含 packages.jsondist/ 子目录、include/ 等),需整体拷贝到内网 Web 服务器(如 Nginx)根目录
  • 客户端机器的 composer.jsonrepositories URL 必须指向该内网地址,且确保该地址可被所有客户端 DNS 解析(不能写 localhost 或私有 IP 未配置 hosts)
  • 如果使用自签名 HTTPS 证书,客户端需提前在系统或 Composer 配置中信任该证书,否则 composer install 会因 SSL 验证失败中断

最易忽略的是:Satis 不处理包依赖的递归解析——它只按你给的仓库列表或 require 列表拉取,不会自动补全这些包所依赖的第三方包(比如你的内部包依赖 monolog/monolog)。那些也得显式加进 repositoriesrequire,否则离线时就缺货。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

147

2023.12.25

nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

490

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

496

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

329

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3505

2024.08.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

402

2023.08.07

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.1万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号