|
| 1 | +# Aerospike Package Naming Guidelines |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +This document covers how we name our packages across different Linux distributions and architectures. We've established these conventions to keep things consistent and predictable. |
| 6 | +The naming patterns here work with standard DEB and RPM package tools, so they'll parse correctly with `dpkg-deb`, `rpm`, and other package management utilities. |
| 7 | + |
| 8 | +## Canonical Fields |
| 9 | + |
| 10 | +- **`<name>`** — Product SKU identifier, e.g., `aerospike-server-enterprise`, `aerospike-server-community`, `aerospike-tools`, `aerospike-client`. |
| 11 | +- **`<version>`** — Semantic version format: `X.Y.Z[.W]` (three or four components). |
| 12 | +- **`[tag]`** — Optional pre-release marker: any valid identifier that parses with standard DEB/RPM standards (e.g., `dev1`, `rc2`, `start28`, `beta3`). |
| 13 | +- **`<release>`** — Packaging release number (starts at `1` for GA releases; increments for packaging-only respins). |
| 14 | +- **`<distro>`** — Target distribution identifier (see tables below). |
| 15 | +- **`<arch>`** — Target architecture identifier (see table below). |
| 16 | + |
| 17 | +## Package Naming Patterns |
| 18 | + |
| 19 | +### DEB Package Format |
| 20 | + |
| 21 | +```text |
| 22 | +{name}_{version}-{release}{distro}_{arch}.deb |
| 23 | +``` |
| 24 | + |
| 25 | +### RPM Package Format |
| 26 | + |
| 27 | +```text |
| 28 | +{name}-{version}[_{tag}]-{release}.{distro}.{arch}.rpm |
| 29 | +``` |
| 30 | + |
| 31 | +**Note**: The `[tag]` portion is optional and can be any valid identifier that parses with standard DEB/RPM standards. |
| 32 | + |
| 33 | +**Note**: Distribution is included in the filename for debian which extends beyond standard Debian/Ubuntu conventions, which usually handles distribution through repository structure. |
| 34 | + |
| 35 | +## Distribution Identifiers |
| 36 | + |
| 37 | +### Debian/Ubuntu (DEB) |
| 38 | + |
| 39 | +| Distribution | Codename | Filename Token | |
| 40 | +| ------------ | -------- | -------------- | |
| 41 | +| Ubuntu 20.04 | focal | `ubuntu20.04` | |
| 42 | +| Ubuntu 22.04 | jammy | `ubuntu22.04` | |
| 43 | +| Ubuntu 24.04 | noble | `ubuntu24.04` | |
| 44 | +| Debian 11 | bullseye | `debian11` | |
| 45 | +| Debian 12 | bookworm | `debian12` | |
| 46 | + |
| 47 | +### RHEL/EL & Amazon Linux (RPM) |
| 48 | + |
| 49 | +| Distribution Family | Filename Token Examples | |
| 50 | +| ------------------- | ----------------------- | |
| 51 | +| RHEL/EL | `el8`, `el9` | |
| 52 | +| Amazon Linux | `amzn2023` | |
| 53 | + |
| 54 | +## Architecture Identifiers |
| 55 | + |
| 56 | +| Architecture | DEB Token | RPM Token | |
| 57 | +| ------------ | --------- | --------- | |
| 58 | +| x86-64 | `amd64` | `x86_64` | |
| 59 | +| ARM64 | `arm64` | `aarch64` | |
| 60 | + |
| 61 | +## Examples |
| 62 | + |
| 63 | +```text |
| 64 | +# Server packages |
| 65 | +aerospike-server-enterprise-8.1.0.0-1.el9.aarch64.rpm |
| 66 | +aerospike-server-enterprise_8.1.0.0-1debian12_amd64.deb |
| 67 | +
|
| 68 | +# Tools packages |
| 69 | +aerospike-tools-6.4.0-1.el9.x86_64.rpm |
| 70 | +aerospike-tools_6.4.0_ubuntu24.04_amd64.deb |
| 71 | +
|
| 72 | +# Other packages |
| 73 | +blastoid-6.4.0-1.amzn2023.aarch64.rpm |
| 74 | +blastoid_6.4.0_debian11_arm64.deb |
| 75 | +
|
| 76 | +# Custom tags |
| 77 | +aerospike-server-community-8.1.0.0-start28-1.el8.x86_64.rpm |
| 78 | +aerospike-server-community_8.1.0.0-start28_debian11_amd64.deb |
| 79 | +``` |
| 80 | + |
| 81 | +## Summary Rules |
| 82 | + |
| 83 | +1. **Product Name First**: Always start with the product SKU identifier |
| 84 | +2. **Full Semantic Version**: Use complete version string (`X.Y.Z[.W]`) |
| 85 | +3. **Field Order**: version → (optional tag) → distro → arch |
| 86 | +4. **Format Consistency**: |
| 87 | + - DEB uses underscore separators (`_`) |
| 88 | + - RPM uses dash and dot separators (`-` and `.`) |
| 89 | +5. **Architecture Consistency**: |
| 90 | + - DEB: `amd64`/`arm64` |
| 91 | + - RPM: `x86_64`/`aarch64` |
| 92 | +6. **Release Numbering**: RPM packages use release number `1` for GA releases |
| 93 | + |
| 94 | +## References |
| 95 | + |
| 96 | +### DEB Package Naming |
| 97 | + |
| 98 | +- **Debian Policy Manual**: [Package naming conventions](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version) |
| 99 | +- **Ubuntu Packaging Guide**: [Package versioning](https://packaging.ubuntu.com/html/packaging-new-software.html#versioning) |
| 100 | +- **dpkg-deb man page**: Package format and naming standards |
| 101 | + |
| 102 | +### RPM Package Naming |
| 103 | + |
| 104 | +- **RPM Packaging Guide**: [Package naming and versioning](https://rpm-packaging-guide.github.io/#package-naming) |
| 105 | +- **Fedora Packaging Guidelines**: [Package naming](https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/) |
| 106 | +- **rpm man page**: Package format and naming standards |
| 107 | + |
| 108 | +### Semantic Versioning |
| 109 | + |
| 110 | +- **SemVer 2.0.0**: [Semantic Versioning Specification](https://semver.org/) |
0 commit comments