Conflicts for python packages with epel following upgrade to 9.4


Following upgrade to 9.4, I am getting this error

cannot install both python3-botocore-1.25.10-1.el9.noarch from epel and python3-botocore-1.31.62-1.el9.noarch from appstream

Could someone please suggest what is the best way to solve this issue?
I would like to keep epel repo.

Choose from which repo you want to update/install the package from, so choose one of the following.

yum --disablerepo=epel update python3-botocore
yum --disablerepo=appstream update python3-botocore

But reading from your last sentence, it’s sounds like you want the the second option since you want to keep the epel version.

Normally the package would be updated. It would be helpful to show us what you exactly do execute and what you precisely want to achieve …

Usually errors similar to this do have one version (“X”) and something (“ZZZ”) that requires that version (X) installed. An update would remove X in order to replace it with Y, but X cannot be removed as long as ZZZ requires it. Typical case has ZZZ from EPEL when it has not been rebuilt for/with Y yet.

However, I were under impression that EPEL avoids offering same package names as the base distro. If both apptream and epel do have python3-botocore, then that assumption does not hold.

For comparison, AlmaLinux 9 does not have that package. Neither does RPM resource python3-botocore list Rocky, does it? (But does list 1.25.10-1.el9 for EPEL 9 and 1.31.62-1.el9 for EPEL 9 Testing.

Perhaps the “appstream” was a typo in the OP?

Name : python3-botocore
Version : 1.25.10
Release : 1.el9
Architecture : noarch
Size : 4.9 M
Source : python-botocore-1.25.10-1.el9.src.rpm
Repository : epel

Name : python3-botocore
Version : 1.31.62
Release : 1.el9
Architecture : noarch
Size : 6.1 M
Source : python-botocore-1.31.62-1.el9.src.rpm
Repository : appstream

Here is a full error for context.
The package installation is normaly done via ansible ansible.builtin.package module that installs bunch of packages, with python-botocore one of them.

- name : install pacakges
          - python3
          - python3-boto3
          - python3-botocore
          - python3-devel
          - python3-pip
          - python3-pycurl

    name: "{{ packages_to_install[ansible_os_family][item] |  default([])}}"
    state: present
    - all

To reproduce the issue when ansible fails following the upgrade to 9.4, I can just run the command below:

yum install python-boto3
Last metadata expiration check: 3:59:29 ago on Wed 29 May 2024 11:35:44 UTC.
Dependencies resolved.
 Package                                                               Architecture                                              Version                                                             Repository                                                    Size
 python3-boto3                                                         noarch                                                    1.22.10-1.el9                                                       epel                                                         161 k
Installing dependencies:
 python3-botocore                                                      noarch                                                    1.25.10-1.el9                                                       epel                                                         4.9 M
 python3-jmespath                                                      noarch                                                    0.9.4-11.el9                                                        appstream                                                     45 k
 python3-s3transfer                                                    noarch                                                    0.5.2-2.el9                                                         epel                                                         113 k

Transaction Summary
Install  4 Packages

Total download size: 5.2 M
Installed size: 64 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): python3-boto3-1.22.10-1.el9.noarch.rpm                                                                                                                                                                                           671 kB/s | 161 kB     00:00    
(2/4): python3-botocore-1.25.10-1.el9.noarch.rpm                                                                                                                                                                                         16 MB/s | 4.9 MB     00:00    
(3/4): python3-s3transfer-0.5.2-2.el9.noarch.rpm                                                                                                                                                                                        1.4 MB/s | 113 kB     00:00    
(4/4): python3-jmespath-0.9.4-11.el9.noarch.rpm                                                                                                                                                                                          84 kB/s |  45 kB     00:00    
Total                                                                                                                                                                                                                                   7.2 MB/s | 5.2 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                                                1/1 
  Installing       : python3-jmespath-0.9.4-11.el9.noarch                                                                                                                                                                                                           1/4 
  Installing       : python3-botocore-1.25.10-1.el9.noarch                                                                                                                                                                                                          2/4 
  Installing       : python3-s3transfer-0.5.2-2.el9.noarch                                                                                                                                                                                                          3/4 
  Installing       : python3-boto3-1.22.10-1.el9.noarch                                                                                                                                                                                                             4/4 
  Running scriptlet: python3-boto3-1.22.10-1.el9.noarch                                                                                                                                                                                                             4/4 
  Verifying        : python3-jmespath-0.9.4-11.el9.noarch                                                                                                                                                                                                           1/4 
  Verifying        : python3-boto3-1.22.10-1.el9.noarch                                                                                                                                                                                                             2/4 
  Verifying        : python3-botocore-1.25.10-1.el9.noarch                                                                                                                                                                                                          3/4 
  Verifying        : python3-s3transfer-0.5.2-2.el9.noarch                                                                                                                                                                                                          4/4 

  python3-boto3-1.22.10-1.el9.noarch                             python3-botocore-1.25.10-1.el9.noarch                             python3-jmespath-0.9.4-11.el9.noarch                             python3-s3transfer-0.5.2-2.el9.noarch                                                     epel                                                         4.9 M

yum install python-botocore
Last metadata expiration check: 3:59:44 ago on Wed 29 May 2024 11:35:44 UTC.
Package python3-botocore-1.25.10-1.el9.noarch is already installed.
 Problem: problem with installed package python3-boto3-1.22.10-1.el9.noarch
  - package python3-boto3-1.22.10-1.el9.noarch from @System requires (python3.9dist(botocore) < 1.26 with python3.9dist(botocore) >= 1.25.10), but none of the providers can be installed
  - package python3-boto3-1.22.10-1.el9.noarch from epel requires (python3.9dist(botocore) < 1.26 with python3.9dist(botocore) >= 1.25.10), but none of the providers can be installed
  - cannot install both python3-botocore-1.31.62-1.el9.noarch from appstream and python3-botocore-1.25.10-1.el9.noarch from @System
  - cannot install both python3-botocore-1.25.10-1.el9.noarch from epel and python3-botocore-1.31.62-1.el9.noarch from appstream
  - cannot install the best candidate for the job
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

does it mean EPEL package name conflicts with the base distro name?

No it means that both epel and appstream have the same package in the repo, the appstream version having the higher version. You just need to pick the one you want to use, by disabling the repo of the package version you don’t want to use.

Lookgs like you are using the package module which only allows you to install or remove a package.

If you use the yum/dnf module, you have a “disablerepo” option, which you could use for this problem.

1 Like

Seems they (EPEL) worked already on it:

yum install python-boto3 --enablerepo=epel-testing