Closed frenzymadness closed 1 year ago
Yep, this is a bug. This combination should work.
If I understand it correctly --keep-foreign should prevent the --add-slave from removing/changing a symlink, if it already exists.
Well, the correct definition is: --keep-foreign prevents changing a symlink if it is not a symlink created by alternatives.
Thank you for the fix!
We have a problem in python3.11-wheel package which we can probably solve by ourselves but I think the strange behavior of alternatives I discovered is still worth reporting.
When talking about packages, I mean the ones available in RHEL 8 and I'm using 1minutetip for testing. The most important ones are chkconfig-1.19.1-1.el8.x86_64 and python3.11-wheel-0.38.4-3.el8.noarch.
To reproduce the problem on RHEL 8:
dnf install python36 python3.11
(Python 3.6 is needed later.)alternatives --set python3 /usr/bin/python3.11
dnf install python3.11-wheel
The installation of python3.11-wheel calls this command in its
%post
scriptlet:alternatives --keep-foreign --add-slave python3 /usr/bin/python3.11 /usr/bin/wheel-3 wheel-3 /usr/bin/wheel-3.11
The command produces the following error:
But, if you set the alternative for python3 to python36 which means that the installation of python3.11-wheel will add the slave into an inactive alternative, it works fine and no error is shown. So these steps are fine:
dnf install python36 python3.11
alternatives --set python3 /usr/bin/python3.6
dnf install python3.11-wheel
If I understand it correctly
--keep-foreign
should prevent the--add-slave
from removing/changing a symlink, if it already exists. If that's true, having--add-slave
together with--keep-foreign
makes perfect sense. The problem is that the error message is not true:/usr/bin/wheel-3
does not exist in this case. Alternatives should create that file if you install python3.11-wheel when python3.11 is the active alternative for python3.To sum this up:
/usr/bin/wheel-3
and shows the error mentioned above./usr/bin/wheel-3
is there and works as expected:/usr/bin/wheel-3 -> /etc/alternatives/wheel-3 -> /usr/bin/wheel-3.11
.Bug report with some more context: https://bugzilla.redhat.com/show_bug.cgi?id=2181479
Does it make sense to use
--keep-foreign
with--add-slave
? If so, could we fix the problem? And if not, could we improve the error message to make it clear that this is not supported?