yum shell - bat out of dependency hell
There’s evil in the air and there’s thunder in sky – Meatloaf “Bat out of hell”
yum install foo [..] Error: foo conflicts with bar
Again I have had the dubious pleasure of having dependencies between RPM-packages ending my attempt to install a single package because of a deep-rooted fear of removing core packages from production systems.
I think this most often happen with Mysql or Percona packages, but I am sure MariaDB and a few other will be able to get you into the same situation too. It’s not the first time I have been here.. (If I am not mistanken the problem shows up when you have several major versions of a program available, all providing some of the same functionality to other packages, all being mutually exclusive.)
[root@ftp01-prod ~]# yum install Percona-Server-client-57 Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package Percona-Server-client-57.x86_64 0:5.7.20-19.1.el7 will be installed --> Processing Dependency: Percona-Server-shared-57 for package: Percona-Server-client-57-5.7.20-19.1.el7.x86_64 --> Running transaction check ---> Package Percona-Server-shared-57.x86_64 0:5.7.20-19.1.el7 will be installed --> Processing Dependency: Percona-Server-shared-compat-57 for package: Percona-Server-shared-57-5.7.20-19.1.el7.x86_64 --> Running transaction check ---> Package Percona-Server-shared-compat-57.x86_64 0:5.7.20-19.1.el7 will be installed --> Processing Conflict: Percona-Server-shared-compat-57-5.7.20-19.1.el7.x86_64 conflicts Percona-Server-shared-56 --> Finished Dependency Resolution Error: Percona-Server-shared-compat-57 conflicts with Percona-Server-shared-56-5.6.38-rel83.0.el7.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest [root@ftp01-prod ~]#
So if I want to install
Percona-Server-client-57 I have to install
Percona-Server-shared-compat-57 too, and that I can’t because of the
Percona-Server-shared-56. OK, so I will just remove
Percona-Server-shared-56 and then install
Percona-Server-shared-compat-57 before doing the install I first tried
[root@ftp01-prod ~]# yum remove Percona-Server-shared-56 [..] Dependencies Resolved ================================================================================================================ Package Arch Version Repository Size ================================================================================================================ Removing: Percona-Server-shared-56 x86_64 5.6.38-rel83.0.el7 @percona-release 3.4 M Removing for dependencies: MySQL-python x86_64 1.2.5-1.el7 @centos_os 284 k fail2ban noarch 0.9.7-1.el7 @epel 0.0 fail2ban-sendmail noarch 0.9.7-1.el7 @epel 11 k perl-DBD-MySQL x86_64 4.023-5.el7 @centos_os 323 k postfix x86_64 2:2.10.1-6.el7 @centos_os 12 M redhat-lsb-core x86_64 4.1-27.el7.centos.1 @anaconda 45 k Transaction Summary ================================================================================================================ Remove 1 Package (+6 Dependent packages) Installed size: 16 M Is this ok [y/N]:
Very much not OK. I can live with temprarily removing
but I’d like to at least keep things with descriptions like this
Description : The Linux Standard Base (LSB) Core module support : provides the fundamental system interfaces, libraries, : and runtime environment upon which all conforming : applications and libraries depend.
The problem seems to be that Postfix needs
which is provided by both
Percona-Server-shared-compat-57. So I just need to swap the former
for the latter, and then I can run my original install.
OK, so I both want to remove a package and install a package. And I want to do it at the same time, so that I don’t have to remove things like redhat-lsb-core. Did you notice the use of the word transaction in Transaction Summary from yum? A transaction is actually what I want. Luckily yum provides a way of doing this, and have probably done since forever, but I didn’t learn about it till today. And as so many times before, it is a shell that solves our problems:
[root@ftp01-prod ~]# yum shell Loaded plugins: fastestmirror, priorities > remove Percona-Server-shared-56 > install Percona-Server-shared-compat-57 Loading mirror speeds from cached hostfile > run --> Running transaction check ---> Package Percona-Server-shared-56.x86_64 0:5.6.38-rel83.0.el7 will be erased ---> Package Percona-Server-shared-compat-57.x86_64 0:5.7.20-19.1.el7 will be installed --> Finished Dependency Resolution ================================================================================================== Package Arch Version Repository Size ================================================================================================== Installing: Percona-Server-shared-compat-57 x86_64 5.7.20-19.1.el7 percona-release 1.2 M Removing: Percona-Server-shared-56 x86_64 5.6.38-rel83.0.el7 @percona-release 3.4 M Transaction Summary ================================================================================================== Install 1 Package Remove 1 Package Total download size: 1.2 M Is this ok [y/d/N]:
Yes, very much thank you! And then finally:
[root@ftp01-prod ~]# yum install Percona-Server-client-57 [..] Dependencies Resolved ================================================================================================== Package Arch Version Repository Size ================================================================================================== Installing: Percona-Server-client-57 x86_64 5.7.20-19.1.el7 percona-release 7.2 M Installing for dependencies: Percona-Server-shared-57 x86_64 5.7.20-19.1.el7 percona-release 747 k Transaction Summary ================================================================================================== Install 1 Package (+1 Dependent package) Total download size: 7.9 M Installed size: 41 M Is this ok [y/d/N]:y [..] Complete!
Done and done :-)