教程:使用 Git 将包发布到私有 kmpkg 注册表
你可以通过 Git 创建专属的 kmpkg 私有包注册表,用于管理和使用私有库,或对现有包进行非公开的定制修改。你可完全掌控包的版本和内容,私有注册表的使用几乎没有任何限制。
本教程将涵盖以下内容:
前提条件:
- 已安装 kmpkg
- 已安装 Git
- 终端/命令行工具
1 - 使用 Git 创建 kmpkg 注册表
kmpkg 基于 Git 的注册表本质是符合 kmpkg 目录规范的 Git 仓库,kmpkg 能识别该结构并加载其中的包。
初始化 Git 注册表仓库:
mkdir kmpkg-registry
cd kmpkg-registry
git init
2 - 创建注册表目录结构
一个有效的 kmpkg 基于 Git 的注册表需包含以下核心内容:
- 名为
ports的文件夹:存放注册表中的所有包端口(port); - 名为
versions的文件夹:存放版本数据库; versions文件夹下的baseline.json文件:版本基线配置文件。
仓库中可包含其他任意文件(如脚本、LICENSE 许可证文件、README.md 说明文档等)。
步骤 1:创建 ports 和 versions 文件夹
mkdir ports
mkdir versions
步骤 2:创建 versions/baseline.json 基线文件
在 versions 文件夹中新建 baseline.json 文件,写入以下内容(最小化有效配置):
{
"default": {}
}
baseline.json 的最简有效配置需包含上述内容。如需了解该文件和版本数据库的更多细节,请参考 版本控制文档。
步骤 3:提交目录结构到 Git 仓库
git add versions/baseline.json
git commit -m "Initial commit"
(可选)若已配置远程 Git 仓库,此时可将本地提交推送到远程:
git remote add origin https://example.com/kmpkg-registry.git
git push --set-upstream origin HEAD
3 - 向注册表添加端口
将所有自定义包的“端口目录”复制到注册表的 ports 文件夹中。每个端口必须有独立的目录,且目录中至少包含 kmpkg.json(包清单)和 portfile.cmake(构建脚本)两个核心文件。如需了解如何创建端口,可参考 打包 GitHub 仓库教程。
添加端口后提交到 Git 仓库:
git add ports/.
git commit -m "Add registry ports"
4 - 更新版本数据库
注册表中的每个端口都需对应一个版本文件,版本文件可通过 kmpkg x-add-version 命令自动生成,该命令还会更新 version/baseline.json 中每个端口的基线条目。
批量更新所有端口的版本数据库
执行以下命令,一次性扫描并更新 ports 目录下所有端口的版本信息:
kmpkg --x-builtin-ports-root=./ports --x-builtin-registry-versions-dir=./versions x-add-version --all --verbose
命令参数说明:
--x-builtin-ports-root=./ports:重定向“内置端口根目录”到本地./ports(默认指向 kmpkg 官方内置端口目录);--x-builtin-registry-versions-dir=./versions:重定向“内置注册表版本目录”到本地./versions;--all:扫描ports目录下所有端口并批量更新版本信息;--verbose:打印命令执行的详细日志(移除该参数可关闭冗余输出)。
提交版本数据库变更
确认命令输出无异常后,将版本文件提交到 Git 仓库:
git add .
git commit -m "Update versions database"
(若配置了远程仓库)推送变更到远程:
git push
后续步骤
至此,你已完成基于 Git 的 kmpkg 私有注册表搭建!
你可尝试以下进阶操作: