别名翻译
包别名的实际展开结果以所用源码的 roles/node_id/vars/*.yml 映射文件为准。
PostgreSQL 在不同操作系统上的软件包命名规则存在显著差异:
- EL 系统(RHEL/Rocky/Alma/…)使用
pgvector_18,postgis36_18这样的格式 - Debian/Ubuntu 系统 使用
postgresql-18-pgvector,postgresql-18-postgis-3这样的格式
这种差异给用户带来了额外的认知负担:您需要记住不同系统的包名规则,还要处理 PostgreSQL 版本号嵌入的问题。
软件包别名
Pigsty 通过 软件包别名(Package Alias) 机制解决了这个问题:您只需使用统一的别名,Pigsty 会处理好所有细节:
别名翻译
别名还可以将一组软件包归类为一个整体,例如 Pigsty 默认安装的软件包 —— pg_packages 的默认值是:
Pigsty 将查询当前的操作系统别名清单(假设为 el10.x86_64),将其翻译为 PGSQL 内核,扩展,以及工具包:
接下来,Pigsty 又进一步通过当前指定的 PG 大版本(假设 pg_version = 18),将 pgsql-main 翻译为:
通过这种方式,Pigsty 屏蔽了软件包的复杂性,让用户可以简单的指定自己想要的功能组件。
哪些变量可以使用别名?
您可以在以下四个参数中使用包别名,别名会根据翻译流程自动转换为实际的软件包名称:
pg_extensions- PG 扩展软件包pg_packages- PG 内核/基础工具软件包repo_packages- 软件包下载参数:下载到本地软件仓库的软件包repo_extra_packages- 扩展安装参数:额外下载到本地软件仓库的软件包
别名列表
你可以在 Pigsty 项目源代码的 roles/node_id/vars/ 目录下,找到各操作系统与架构对应的别名映射文件:
el10.x86_64el10.aarch64el9.x86_64el9.aarch64el8.x86_64el8.aarch64u26.x86_64u26.aarch64u24.x86_64u24.aarch64u22.x86_64u22.aarch64d13.x86_64d13.aarch64d12.x86_64d12.aarch64
工作原理
别名翻译流程
版本占位符
Pigsty 的别名系统使用 $v 作为 PostgreSQL 版本号的占位符。当您使用 pg_version 指定了 PostgreSQL 版本后,所有别名中的 $v 都会被替换为实际版本号。
例如,当 pg_version: 18 时:
| 别名定义 (EL) | 展开结果 |
|---|---|
postgresql$v* | postgresql18* |
pgvector_$v | pgvector_18 |
timescaledb-tsl_$v | timescaledb-tsl_18 |
| 别名定义 (Debian/Ubuntu) | 展开结果 |
|---|---|
postgresql-$v | postgresql-18 |
postgresql-$v-pgvector | postgresql-18-pgvector |
postgresql-$v-timescaledb-tsl | postgresql-18-timescaledb-tsl |
精确包名与通配符
EL 映射使用精确包名,例如 postgis → postgis36_$v、pgvector → pgvector_$v,不会自动追加 *。显式使用通配符可能安装更多子包;具体展开以对应平台的 package_map 为准。
别名展开只做名称映射与版本占位符替换,不会保证所选 PostgreSQL 版本、架构及仓库存在这个包。类别组也会按平台调整成员,使用前应核对 扩展可用性矩阵。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)