Looking at the apt log, the trigger seems to have been that this was an upgrade from queens where only the python2 pkgs existed and didn't install the alternative. So when installing the new package, it also refused to overwrite the existing old binary with a symlink:
Preparing to unpack .../python3-neutron-dynamic-routing_2%3a13.0.0-0ubuntu1~cloud0_all.deb ...
Unpacking python3-neutron-dynamic-routing (2:13.0.0-0ubuntu1~cloud0) ...
Setting up python3-neutron-dynamic-routing (2:13.0.0-0ubuntu1~cloud0) ...
update-alternatives: using /usr/bin/python3-neutron-bgp-dragent to provide /usr/bin/neutron-bgp-dragent (neutron-bgp-dragent) in auto mode
update-alternatives: warning: not replacing /usr/bin/neutron-bgp-dragent with a link
IIUC the solution is to make python3-neutron-dynamic-routing conflict with older versions of python-neutron-dynamic-routing.
Looking at the apt log, the trigger seems to have been that this was an upgrade from queens where only the python2 pkgs existed and didn't install the alternative. So when installing the new package, it also refused to overwrite the existing old binary with a symlink:
Preparing to unpack .../python3- neutron- dynamic- routing_ 2%3a13. 0.0-0ubuntu1~ cloud0_ all.deb ... neutron- dynamic- routing (2:13.0. 0-0ubuntu1~ cloud0) ... neutron- dynamic- routing (2:13.0. 0-0ubuntu1~ cloud0) ... alternatives: using /usr/bin/ python3- neutron- bgp-dragent to provide /usr/bin/ neutron- bgp-dragent (neutron- bgp-dragent) in auto mode alternatives: warning: not replacing /usr/bin/ neutron- bgp-dragent with a link
Unpacking python3-
Setting up python3-
update-
update-
IIUC the solution is to make python3- neutron- dynamic- routing conflict with older versions of python- neutron- dynamic- routing.