debian,ceph.spec: fix ceph-osd upgrade conflicts#66568
Conversation
debian/control
Outdated
| ${misc:Depends}, | ||
| ${shlibs:Depends}, | ||
| Conflicts: ceph-osd (<< 20.3) | ||
| Replaces: ceph-osd (<< 20.3) |
There was a problem hiding this comment.
instead of making ceph-osd conflict with ceph-osd, we might want to make ceph-osd-classic and ceph-osd-crimson conflict with ceph-osd (<< 20.3). because ceph-osd cannot coexist with another version of ceph-osd, so they inherently conflicts with each other. but in the failure, it was ceph-osd-classic which tried to create a symbolic link to /usr/bin/ceph-osd, which was a file provided by ceph-osd (<< 20.3).
There was a problem hiding this comment.
Makes sense, thanks. Updating
1d8274e to
69b37bc
Compare
69b37bc to
16cc623
Compare
|
thank you!
it looks like builds are failing while quay.ceph.io is being migrated |
fresh builds in https://shaman.ceph.com/builds/ceph/wip-matanb-crimson-obselte/, i'll run the rgw/upgrade suite to verify |
|
|
@cbodley Thanks for testing. @Matan-B I realized that the right fix is to use fi
%endif
- %post osd-classic
+ %posttrans osd-classic
%{_sbindir}/update-alternatives --install %{_bindir}/ceph-osd ceph-osd \
%{_bindir}/ceph-osd-classic 100As this is the standard RPM practice for file-to-symlink transitions, as documented in the Fedora packaging guidelines. No hacks, no file manipulation, just proper use of the RPM scriptlet ordering. Sources: |
Thanks Kefu! IIUC we still need Obsoletes. right? So that the |
|
yup, we still need to have |
16cc623 to
75f5fab
Compare
With ceph#65782 merged, upgrading ceph-osd would need to replace the previous ceph-osd existing on the machine. Otherwise, we won't be able to symlink the newly installed package: ``` 2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout: Installing : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6 24/87 2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout: Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6 24/87 2025-12-05T21:09:20.479 INFO:teuthology.orchestra.run.smithi077.stdout:failed to link /usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd exists and it is not a symlink ``` Note: debian/control ceph-osd-classic already had Replace and Breaks: - Breaks is replaced with Conflicts to not allow coexistence. - Release version is bumped up to be relevant for latest main Signed-off-by: Matan Breizman <mbreizma@redhat.com>
75f5fab to
9f1c8f9
Compare
|
looks promising: upgrade testing: |
|
jenkins test make check arm64 |
|
jenkins test api |
|
now that the upgrade tests passed. i am merging this change. |
With #65782 merged, upgrading ceph-osd would need to replace the previous ceph-osd existing on the machine. Otherwise, we won't be able to symlink the newly installed package:
See: #66341 (comment)
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job DefinitionYou must only issue one Jenkins command per-comment. Jenkins does not understand
comments with more than one command.