'update-alternatives --set java java-21-openjdk.x86_64' fails on newer
EL releases with 'java-21-openjdk.x86_64 has not been configured as an
alternative for java' because the java alternative is registered under
its full JVM path instead of the family name.
Query 'alternatives --display java' for the installed path matching
java_version and pass that to the alternatives module, mirroring the
Debian block above.
Signed-off-by: David Galloway <david.galloway@ibm.com>
when:
- (ansible_os_family | lower) == 'debian'
- - name: Set java version alternative for RedHat
- shell:
- cmd: update-alternatives --set java '{{ java_version }}-openjdk.{{ ansible_architecture }}'
+ - name: Set java alternative for redhat
+ block:
+ - name: Get java version alternative
+ shell: >-
+ alternatives --display java | awk '/^\// && /{{ java_version }}/ {print $1}'
+ register: java_alternatives_redhat
+ changed_when: false
+
+ - name: Set java version alternative
+ alternatives:
+ name: java
+ path: "{{ java_alternatives_redhat.stdout_lines | first }}"
when:
- (ansible_os_family | lower) == 'redhat'