Created attachment 1542700 [details] Proposed patch Description of problem: When /usr/bin/python3 symnlink gets moved from python34 to python36, yum dowsn't undertsand it should pull in python36 to fullfill dependency on /usr/bin/python3 Version-Release number of selected component (if applicable): System has installed following packages: rlwrap-0.43-1.el7.x86_64 python34-msgpack-0.5.6-4.el7.x86_64 python34-3.4.9-2.el7.x86_64 python34-setuptools-39.2.0-2.el7.noarch python34-llfuse-1.0-1.el7.x86_64 python34-libs-3.4.9-2.el7.x86_64 yum update ends to: Running transaction check ERROR with transaction check vs depsolve: /usr/bin/python3 is needed by (installed) rlwrap-0.43-1.el7.x86_64 How reproducible: Always if python36 package is not installed. Installing python36-3.6.6-2.el7 before update fixes the issue. Expected results: I'd expect python36 to be installed to fullfill dependency /usr/bin/python3. Additional info: With attached patch, update works as expected. Installed: python36.x86_64 0:3.6.6-4.el7 Dependency Installed: python36-libs.x86_64 0:3.6.6-4.el7 Updated: python34-libs.x86_64 0:3.4.9-3.el7 Dependency Updated: python34.x86_64 0:3.4.9-3.el7 Replaced: python34.x86_64 0:3.4.9-2.el7 Complete!
Note that obsoletes is only for python34 versions with /usr/bin/python3 symlink so that yum understands to pull in python36 package to replace that symlink. Because latest version of python34 is not obsoleted, dependencies pull in latest python34 and python34-libs updates. So Net effect is that python36 with /usr/bin/python3 gets installed to fullfill file requirements.
Obsoletes is not the correct choice. Users that haven't update to the latest python34 will get swapped to python36, which we don't want to force. python36 does need to add a conflicts (`Conflicts: python34 < 3.4.9-3`) to reflect the file conflict of /usr/bin/python3. rlwrap requires /usr/bin/python3 due to automatic dependency added from shebang lines of python scripts in /usr/share/rlwrap. I don't know if those are strictly necessary or not, so I'm changing the component on this to get the rlwrap maintainer's input. Depending on the answer a few choices exist: 1. remove shebang lines 2. change shebang lines to /usr/bin/python or /usr/bin/python2 to use base python 3. change shebang lines to /usr/bin/python3.4 or /usr/bin/python3.6 if a python3 version is strictly necessary 4. filter out the python auto-dependency 5. remove the execute bit on those files so the auto-dependency tooling ignores them 6. explicitly depend on `python36 >= 3.6.6-3` (the first release to include /usr/bin/python3) so it's included in the update transaction While typing this up, I noticed that /usr/share/rlwrap/filters/README says: The filters in this directory have been written to test rlwrap, not to be practical. The test suite looks to be a combination of make, shell, and perl. As best I can tell they don't use python, so I'd lean towards removing the dependency via 1, 4, or 5 above.
> Users that haven't update to the latest python34 will get swapped to python36 They wont. See https://src.fedoraproject.org/rpms/python36/pull-request/27#comment-23169
abrt-addon-python3-2.1.11-50.el7 asciinema-1.4.0-2.el7 autowrap-0.19.0-2.el7 avogadro2-libs-1.90.0-12.el7 backintime-1.1.20-5.el7 blender-2.68a-8.el7 borgbackup-1.1.8-3.el7 borgmatic-1.1.15-3.el7 cherrytree-0.38.5-5.el7 cinnamon-menus-3.6.0-4.el7 cinnamon-screensaver-3.6.1-4.el7 clustershell-1.8.1-2.el7 cmake3-3.13.4-2.el7 ddupdate-0.6.0-3.el7 debconf-1.5.69-2.el7 devscripts-2.16.5-2.el7 docker-compose-1.18.0-4.el7 espresso-4.0.1-2.el7 fish-2.3.1-2.el7 future-0.16.0-7.el7 global-6.5.6-4.el7 gramps-5.0.1-2.el7 jpype-0.6.3-8.el7 lammps-20181212-2.el7 lensfun-0.3.2-14.el7 lhapdf-6.2.1-6.el7 libpeas-loader-python3-1.22.0-2.el7 libprelude-4.1.0-3.el7 libpreludedb-4.1.0-2.el7 lirc-0.10.0-16.el7 lxc-1.0.11-2.el7 meson-0.47.2-2.el7 mint-y-theme-1.2.4-2.el7 netcdf4-python-1.2.7-4.el7 nordugrid-arc-5.4.3-2.el7 petsc4py-3.9.1-4.el7 prelude-correlator-4.1.1-4.el7 py4j-0.10.7-4.el7 pycmd-1.2-5.el7 pyflakes-1.6.0-4.el7 pyicu-1.5-26.el7 pylint-1.6.5-5.el7 pyotherside-1.5.3-8.el7 pythia8-8.2.35-6.el7 python3-cairo-1.10.0-25.el7 python3-cffi-1.9.1-3.el7 python3-chardet-2.3.0-5.el7 python34-3.4.9-3.el7 python36-3.6.6-5.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-f2d195dada
(In reply to Miro Hrončok from comment #3) > > Users that haven't update to the latest python34 will get swapped to python36 > > They wont. See > https://src.fedoraproject.org/rpms/python36/pull-request/27#comment-23169 I was talking about attached patch which is better approach for this - only one package needs to be obsoleted - obsoleting all of them can break it all.
> obsoleting all of them can break it all. What's the difference?
Only one package should be obsoleted. Not all of them. Now you replace all python34 sub-packages which can cause total replacement of python34 with pyton36 equivalents which is not what was wanted - see my explanation from this bug again and check my patch which does minimal changes fixing only this issue and not causing several other issues.
I've checked your patch. What is the **difference in behavior** to obsoleting all subpackages? You say it causes several issues. What issues? The obsoleted subpackages depend transitively on the main package. They cannot stay while the main package is removed.
Your suggested patch causes complete removal of python34* In case of python3 software on system is not rpm packaged which is quite normal case. See comment 1 and initial bug report what my patch causes. It only causes python36 to be added to system with python34 so that /usr/bin/python3 shebang still works. This was throughly ttested.
It causes old python34 to be removed if no other packages depend on it. For users with python34 installed without additional packages installed, it acts as (yes, potentially breaking) update from 3.4 to 3.6. For users with additional python34 packages installed, it keeps it installed. python34-libs isn't "additional packages", it is an essential part of python34. If you use Python 3 software that only depends on the standard library, you get a newer Python version, but it should work, in most cases. if it doesn't work, you can fetch 3.4 back. If you use Python 3 software but also have stuff like pytho34-requests installed to make it work, Python 3.4 will be kept. This is the desired behavior, we eventually want to get rid of Python 3.4, it just lost security support from upstream.
I completely understand that - but what you do now is more than just a fix for this issue.
Yes, it is a strategic decision of a sort that also fixes this issue. Thanks
abrt-addon-python3-2.1.11-50.el7, asciinema-1.4.0-2.el7, autowrap-0.19.0-2.el7, avogadro2-libs-1.90.0-12.el7, backintime-1.1.20-5.el7, blender-2.68a-8.el7, borgbackup-1.1.8-3.el7, borgmatic-1.1.15-3.el7, cherrytree-0.38.5-5.el7, cinnamon-menus-3.6.0-4.el7, cinnamon-screensaver-3.6.1-4.el7, clustershell-1.8.1-2.el7, cmake3-3.13.4-2.el7, ddupdate-0.6.0-3.el7, debconf-1.5.69-2.el7, devscripts-2.16.5-2.el7, docker-compose-1.18.0-4.el7, espresso-4.0.1-2.el7, fish-2.3.1-2.el7, future-0.16.0-7.el7, global-6.5.6-4.el7, gramps-5.0.1-2.el7, jpype-0.6.3-8.el7, lammps-20181212-2.el7, lensfun-0.3.2-14.el7, lhapdf-6.2.1-6.el7, libpeas-loader-python3-1.22.0-2.el7, libprelude-4.1.0-3.el7, libpreludedb-4.1.0-2.el7, lirc-0.10.0-16.el7, lxc-1.0.11-2.el7, meson-0.47.2-2.el7, mint-y-theme-1.2.4-2.el7, netcdf4-python-1.2.7-4.el7, nordugrid-arc-5.4.3-2.el7, petsc4py-3.9.1-4.el7, prelude-correlator-4.1.1-4.el7, py4j-0.10.7-4.el7, pycmd-1.2-5.el7, pyflakes-1.6.0-4.el7, pyicu-1.5-26.el7, pylint-1.6.5-5.el7, pyotherside-1.5.3-8.el7, pythia8-8.2.35-6.el7, python3-cairo-1.10.0-25.el7, python3-cffi-1.9.1-3.el7, python3-chardet-2.3.0-5.el7, python34-3.4.9-3.el7, python36-3.6.6-5.el7 has been pushed to the Fedora EPEL 7 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-f2d195dada
abrt-addon-python3-2.1.11-50.el7, asciinema-1.4.0-2.el7, autowrap-0.19.0-2.el7, avogadro2-libs-1.90.0-12.el7, backintime-1.1.20-5.el7, blender-2.68a-8.el7, borgbackup-1.1.8-3.el7, borgmatic-1.1.15-3.el7, cherrytree-0.38.5-5.el7, cinnamon-menus-3.6.0-4.el7, cinnamon-screensaver-3.6.1-4.el7, clustershell-1.8.1-2.el7, cmake3-3.13.4-2.el7, ddupdate-0.6.0-3.el7, debconf-1.5.69-2.el7, devscripts-2.16.5-2.el7, docker-compose-1.18.0-4.el7, espresso-4.0.1-2.el7, fish-2.3.1-2.el7, future-0.16.0-7.el7, global-6.5.6-4.el7, gramps-5.0.1-2.el7, jpype-0.6.3-8.el7, lammps-20181212-2.el7, lensfun-0.3.2-14.el7, lhapdf-6.2.1-6.el7, libpeas-loader-python3-1.22.0-2.el7, libprelude-4.1.0-3.el7, libpreludedb-4.1.0-2.el7, lirc-0.10.0-16.el7, lxc-1.0.11-2.el7, meson-0.47.2-2.el7, mint-y-theme-1.2.4-2.el7, netcdf4-python-1.2.7-4.el7, nordugrid-arc-5.4.3-2.el7, petsc4py-3.9.1-4.el7, prelude-correlator-4.1.1-4.el7, py4j-0.10.7-4.el7, pycmd-1.2-5.el7, pyflakes-1.6.0-4.el7, pyicu-1.5-26.el7, pylint-1.6.5-5.el7, pyotherside-1.5.3-8.el7, pythia8-8.2.35-6.el7, python3-cairo-1.10.0-25.el7, python3-cffi-1.9.1-3.el7, python3-chardet-2.3.0-5.el7, python34-3.4.9-3.el7, python36-3.6.6-5.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.