]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
debian,ceph.spec: split ceph-osd into shared base and implementation packages wip-build-crimson-osd-kefu-10-07
authorKefu Chai <k.chai@proxmox.com>
Tue, 30 Sep 2025 13:04:46 +0000 (21:04 +0800)
committerKefu Chai <tchaikov@gmail.com>
Sun, 5 Oct 2025 06:33:45 +0000 (14:33 +0800)
commite4b6588dfa11d429e02bc777d1b2c5b5dcd325d0
tree7283df961365d1b3b9f3b6fe68655f6d9129c01c
parent857a4624ba13bc30bb6a4f02da8578eeb33b981c
debian,ceph.spec: split ceph-osd into shared base and implementation packages

Previously, ceph-osd packaging had two mutually exclusive flavors that
could only be built one at a time: one with classic OSD and another
with crimson OSD. Both provided /usr/bin/ceph-osd, making them
impossible to coexist and confusing from a user perspective.
This commit restructures the packaging to enable both implementations
to coexist on the same system:

- ceph-osd: Contains shared components (systemd units, sysctl configs,
  common executables like ceph-erasure-code-tool) and depends on exactly
  one OSD implementation
- ceph-osd-classic: Contains the classic OSD implementation binary and
  classic-specific tools
- ceph-osd-crimson: Contains the crimson OSD implementation binary and
  crimson-specific tools

The two implementation packages conflict with each other but both
depend on ceph-osd for shared resources.

Changes:

Debian packaging:

- Revert e5f00d2f
- Add ceph-crimson-osd package
- Add Recommends: ceph-classic-osd to prefer classic on upgrades
- Add Replaces/Breaks for smooth upgrades from old monolithic package
- Create separate .install files for crimson and classic osd packages
  Enforce exact version matching using ${binary:Version}

RPM packaging:

- Use rich dependencies for OR requirement (classic or crimson)
- Add Recommends: ceph-classic-osd for upgrade preference

Upgrade behavior:

Users upgrading from older versions will automatically get
ceph-classic-osd due to the Recommends directive, maintaining
backward compatibility. Users can explicitly choose crimson by
installing ceph-osd-crimson, which will conflict out classic.
Switching between implementations is supported via standard package
operations, with the alternatives system ensuring /usr/bin/ceph-osd
always points to the active implementation.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
ceph.spec.in
debian/ceph-classic-osd.install [new file with mode: 0755]
debian/ceph-classic-osd.postinst [new file with mode: 0644]
debian/ceph-classic-osd.prerm [new file with mode: 0644]
debian/ceph-crimson-osd.install [new file with mode: 0755]
debian/ceph-crimson-osd.postinst [new file with mode: 0644]
debian/ceph-crimson-osd.prerm [new file with mode: 0644]
debian/ceph-osd.install [changed mode: 0755->0644]
debian/control
debian/rules