Dependencies broken in EPEL, certbot-dns-route53, CentOS 7

I ran this command:
yum install python2-certbot-dns-route53 (as root)

It produced this output:
yum install python2-certbot-dns-route53
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.advancedhosters.com
* epel: d2lzkl7pfhq30w.cloudfront.net
* extras: mirrors.advancedhosters.com
* remi-safe: repo1.ash.innoscale.net
* updates: mirrors.advancedhosters.com
Resolving Dependencies
–> Running transaction check
—> Package python2-certbot-dns-route53.noarch 0:0.36.0-1.el7 will be installed
–> Processing Dependency: python-boto3 for package: python2-certbot-dns-route53-0.36.0-1.el7.noarch
–> Processing Dependency: python2-zope-interface for package: python2-certbot-dns-route53-0.36.0-1.el7.noarch
–> Running transaction check
—> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
–> Processing Dependency: python-futures >= 2.2.0 for package: python2-boto3-1.4.6-1.el7.noarch
–> Processing Dependency: python2-botocore >= 1.5.0 for package: python2-boto3-1.4.6-1.el7.noarch
–> Processing Dependency: python2-jmespath >= 0.7.1 for package: python2-boto3-1.4.6-1.el7.noarch
–> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
—> Package python2-zope-interface.noarch 0:4.0.5-0.el7 will be installed
–> Running transaction check
—> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
–> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
—> Package python2-botocore.noarch 0:1.6.0-1.el7 will be installed
–> Processing Dependency: python-dateutil >= 1.4 for package: python2-botocore-1.6.0-1.el7.noarch
–> Processing Dependency: python-docutils >= 0.10 for package: python2-botocore-1.6.0-1.el7.noarch
—> Package python2-futures.noarch 0:3.1.1-5.el7 will be installed
—> Package python2-jmespath.noarch 0:0.9.0-3.el7 will be installed
–> Running transaction check
—> Package python-dateutil.noarch 0:1.5-7.el7 will be installed
—> Package python-docutils.noarch 0:0.11-0.3.20130715svn7687.el7 will be installed
–> Processing Dependency: python-imaging for package: python-docutils-0.11-0.3.20130715svn7687.el7.noarch
—> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
–> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
–> Running transaction check
—> Package python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7 will be installed
–> Processing Dependency: libwebp.so.4()(64bit) for package: python-pillow-2.0.0-19.gitd1c6db8.el7.x86_64
—> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
–> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
–> Running transaction check
—> Package libwebp.x86_64 0:0.3.0-7.el7 will be installed
—> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
–> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
–> Finished Dependency Resolution
Error: Package: python2-boto3-1.4.6-1.el7.noarch (epel)
Requires: python2-s3transfer >= 0.1.10
Available: python2-s3transfer-0.1.10-1.el7.noarch (epel)
python2-s3transfer = 0.1.10-1.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

My web server is (include version):
Apache/2.4.6

The operating system my web server runs on is (include version):
CentOS 7

My hosting provider, if applicable, is:
AWS

I can login to a root shell on my machine (yes or no, or I don’t know):
Yes.

I’m using a control panel to manage my site (no, or provide the name and version of the control panel):
No

The version of my client is (e.g. output of certbot --version or certbot-auto --version if you’re using Certbot):
certbot 0.36.0

This stuff is unfortunately way over my head, but there’s an article here that has what looks like a workaround to a deficiency in EPEL.

https://bugzilla.redhat.com/show_bug.cgi?id=1646424

Can anyone confirm that the workaround is safe to do?

yum install --setopt=obsoletes=0 python2-certbot-dns-route53 is safe to do.

It does have the side effect that other yum commands you run like yum upgrade will complain about the same problem in the future though. If that happens, I recommend following yum’s suggestion of including --skip-broken and if that doesn’t work, --setopt=obsoletes=0.

While I would recommend doing the suggested workaround for now, I’ve brought this problem to the attention of Certbot’s package maintainers in EPEL and hope they can help the maintainers of s3transfer resolve it soon.

Tried it, but on a CentOS 7.5 system,

[centos@ip-172-28-0-8 ~]$ cat install-certbot2.sh
#!/bin/bash

yum install yum-plugin-copr
yum copr enable cstratak/boto3_dependency_issue
yum install python2-boto3
yum --enablerepo=epel -y install certbot python2-certbot-dns-route53
[centos@ip-172-28-0-8 ~]$ sudo ./install-certbot2.sh
Loaded plugins: copr, fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirrors.cat.pdx.edu
  • epel: mirrors.cat.pdx.edu
  • extras: mirrors.cat.pdx.edu
  • updates: mirrors.cat.pdx.edu
    Package yum-plugin-copr-1.1.31-50.el7.noarch already installed and latest version
    Nothing to do
    Loaded plugins: copr, fastestmirror

You are about to enable a Copr repository. Please note that this
repository is not part of the main Fedora distribution, and quality
may vary.

The Fedora Project does not exercise any power over the contents of
this repository beyond the rules outlined in the Copr FAQ at
https://fedorahosted.org/copr/wiki/UserDocs#WhatIcanbuildinCopr, and
packages are not held to any quality or securty level.

Please do not file bug reports about these packages in Fedora
Bugzilla. In case of problems, contact the owner of this repository.

Do you want to continue? [y/N]: y
Error: [Errno 14] HTTPS Error 404 - Not Found
Loaded plugins: copr, fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirrors.cat.pdx.edu
  • epel: mirrors.cat.pdx.edu
  • extras: mirrors.cat.pdx.edu
  • updates: mirrors.cat.pdx.edu
    Resolving Dependencies
    –> Running transaction check
    —> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
    –> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
    Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
    –> Finished Dependency Resolution
    Error: Package: python2-boto3-1.4.6-1.el7.noarch (epel)
    Requires: python2-s3transfer >= 0.1.10
    Available: python2-s3transfer-0.1.10-1.el7.noarch (epel)
    python2-s3transfer = 0.1.10-1.el7
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest
    Loaded plugins: copr, fastestmirror
    Loading mirror speeds from cached hostfile
  • base: mirrors.cat.pdx.edu
  • epel: mirrors.cat.pdx.edu
  • extras: mirrors.cat.pdx.edu
  • updates: mirrors.cat.pdx.edu
    Resolving Dependencies
    –> Running transaction check
    —> Package certbot.noarch 0:0.36.0-1.el7 will be installed
    –> Processing Dependency: python2-certbot = 0.36.0-1.el7 for package: certbot-0.36.0-1.el7.noarch
    —> Package python2-certbot-dns-route53.noarch 0:0.36.0-1.el7 will be installed
    –> Processing Dependency: python-boto3 for package: python2-certbot-dns-route53-0.36.0-1.el7.noarch
    –> Running transaction check
    —> Package python2-boto3.noarch 0:1.4.6-1.el7 will be installed
    –> Processing Dependency: python2-s3transfer >= 0.1.10 for package: python2-boto3-1.4.6-1.el7.noarch
    Package python2-s3transfer is obsoleted by python-s3transfer, but obsoleting package does not provide for requirements
    —> Package python2-certbot.noarch 0:0.36.0-1.el7 will be installed
    –> Finished Dependency Resolution
    Error: Package: python2-boto3-1.4.6-1.el7.noarch (epel)
    Requires: python2-s3transfer >= 0.1.10
    Available: python2-s3transfer-0.1.10-1.el7.noarch (epel)
    python2-s3transfer = 0.1.10-1.el7
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest

The flag to yum install that needs to be set is --setopt=obsoletes=0 which I don’t see in your script.

Not much luck with this either on a CentOS 7.5 system… it appears to install correctly but

[centos@ip-172-28-0-8 ~]$ certbot --version
An unexpected error occurred:
VersionConflict: (s3transfer 0.0.1 (/usr/lib/python2.7/site-packages), Requirement.parse(‘s3transfer>=0.1.10,<0.2.0’))
Please see the logfile ‘/tmp/tmpTkvivl’ for more details.

centos@ip-172-28-0-8 ~]$ cat /tmp/tmpTkvivl
2019-08-12 22:43:08,395:DEBUG:certbot.log:Exiting abnormally:
Traceback (most recent call last):
File “/usr/bin/certbot”, line 9, in
load_entry_point(‘certbot==0.36.0’, ‘console_scripts’, ‘certbot’)()
File “/usr/lib/python2.7/site-packages/certbot/main.py”, line 1351, in main
plugins = plugins_disco.PluginsRegistry.find_all()
File “/usr/lib/python2.7/site-packages/certbot/plugins/disco.py”, line 208, in find_all
plugin_ep = PluginEntryPoint(entry_point)
File “/usr/lib/python2.7/site-packages/certbot/plugins/disco.py”, line 50, in init
self.plugin_cls = entry_point.load()
File “/usr/lib/python2.7/site-packages/pkg_resources.py”, line 2259, in load
if require: self.require(env, installer)
File “/usr/lib/python2.7/site-packages/pkg_resources.py”, line 2272, in require
working_set.resolve(self.dist.requires(self.extras),env,installer)))
File “/usr/lib/python2.7/site-packages/pkg_resources.py”, line 630, in resolve
raise VersionConflict(dist,req) # XXX put more info here
VersionConflict: (s3transfer 0.0.1 (/usr/lib/python2.7/site-packages), Requirement.parse(‘s3transfer>=0.1.10,<0.2.0’))
2019-08-12 22:43:08,395:ERROR:certbot.log:An unexpected error occurred:

Hmm, I think I cleverly replied to the wrong article. I was trying to reply to the corey2 about the bugzilla suggestion to use the copr pluging, etc.

Well, crud, I just ran in to some 3 reply limit for newbies. Awkward.

So I’ll hijack this reply to say that unfortunately this script

#!/bin/bash

yum --enablerepo=epel -y install certbot
yum --enablerepo=epel -y install --setopt=obsoletes=0 python2-certbot-dns-route53

still leads to this result

centos@ip-172-28-0-8 ~]$ certbot --version
An unexpected error occurred:
VersionConflict: (s3transfer 0.0.1 (/usr/lib/python2.7/site-packages), Requirement.parse(‘s3transfer>=0.1.10,<0.2.0’))

Ah I see! Yes it appears the COPR repository referenced in that thread no longer exists. I tested the other suggestion to set --setopt=obsoletes=0 and it worked for me.

@bmw, will you guys be posting somewhere when the certbot in EPEL repository is fixed?

Sure. I’ll try to remember to update this thread when the issues with the name of the s3transfer package which certbot-dns-route53’s transitively depends on is resolved.

On the off-chance I forget though, it might not hurt to add yourself to the CC list on the Bugzilla thread so you will be updated when its state changes.

1 Like