作为业余管理员,多年来我已经解决了许多依赖性问题:我只是删除了一些包,直到整个问题得到解决,或者(如果后果太大)等到问题自行解决。
# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
现在我想了解以下内容的含义:
# yum update
Loaded plugins: fastestmirror, replace
Loading mirror speeds from cached hostfile
* base: ...
* epel: ...
* extras: ...
* updates: ...
* webtatic: ...
Resolving Dependencies
--> Running transaction check
---> Package ImageMagick.x86_64 0:6.7.8.9-18.el7 will be updated
--> Processing Dependency: libMagickCore.so.5()(64bit) for package: php72w-pecl-imagick-3.4.3-1.2.w7.x86_64
--> Processing Dependency: libMagickWand.so.5()(64bit) for package: php72w-pecl-imagick-3.4.3-1.2.w7.x86_64
---> Package ImageMagick.x86_64 0:6.9.10.68-3.el7 will be an update
--> Finished Dependency Resolution
Error: Package: php72w-pecl-imagick-3.4.3-1.2.w7.x86_64 (@webtatic)
Requires: libMagickCore.so.5()(64bit)
Removing: ImageMagick-6.7.8.9-18.el7.x86_64 (@base)
libMagickCore.so.5()(64bit)
Updated By: ImageMagick-6.9.10.68-3.el7.x86_64 (base)
Not found
Error: Package: php72w-pecl-imagick-3.4.3-1.2.w7.x86_64 (@webtatic)
Requires: libMagickWand.so.5()(64bit)
Removing: ImageMagick-6.7.8.9-18.el7.x86_64 (@base)
libMagickWand.so.5()(64bit)
Updated By: ImageMagick-6.9.10.68-3.el7.x86_64 (base)
Not found
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
我猜想系统会ImageMagick.x86_64
从更新0:6.7
到0:6.9
但无法做到。那么我的猜测是:删除0:6.7
会删除libMagickCore.so.5
但最后一个需要php72w-pecl-imagick-3.4.3-1.2.w7.x86_64
... 那么为什么不留libMagickCore.so.5
在系统中呢?可能是因为需要一个新的,但我不知道哪一个...
我真的不明白幕后到底发生了什么。
答案1
您可以从此示例中按如下方式解释错误:
Error: Package: php72w-pecl-imagick-3.4.3-1.2.w7.x86_64 (@webtatic)
Requires: libMagickCore.so.5()(64bit)
Removing: ImageMagick-6.7.8.9-18.el7.x86_64 (@base)
libMagickCore.so.5()(64bit)
Updated By: ImageMagick-6.9.10.68-3.el7.x86_64 (base)
Not found
首先,Package:
受影响的软件包是 。由于存储库名称以 为前缀@
,因此该软件包已安装。此软件包声明它Requires: libMagickCore.so.5()(64bit)
。
该包Removing:
显示它提供了libMagickCore.so.5()(64bit)
。
该包Updated By:
(尚未安装)不提供它,如 显示Not found
。
这意味着尝试升级ImageMagick
将会删除libMagickCore.so.5()(64bit)
并因此导致php72w-pecl-imagick
中断。
导致该问题的根本原因是升级后的 ImageMagick 软件包不再提供 libMagickCore.so.5 或 libMagickWand.so.5,新软件包中有 libMagickCore.so.6 和 libMagickWand.so.6。
[root@vmtest-centos7 ~]# rpm -q --provides ImageMagick
ImageMagick = 6.9.10.68-3.el7
ImageMagick(x86-64) = 6.9.10.68-3.el7
libMagickCore-6.Q16.so.6()(64bit)
libMagickWand-6.Q16.so.6()(64bit)
....
但是您的第三方 PHP 软件包依赖于 libMagickCore.so.5 和 libMagickWand.so.5。要解决此问题,这些软件包的维护者需要针对新版本的 ImageMagick 重建它们。
这种 ABI 更改通常不会发生在 CentOS(或其所基于的 RHEL)上,尽管过去至少发生过一次(那是距离灾难很近)。发生这种情况时,发行版还会重建该发行版中所有受影响的软件包,但第三方也必须重建他们的软件包,并且更新将会中断,直到他们重建为止。