我遇到了以下错误:
Transaction Check Error:
package apr-1.3.12-1.jason.1.x86_64 (which is newer than apr-1.2.7-11.el5_6.5.cloudlinux.2.i386) is already installed
这是在 cloudlinux 上。apr-1.3.12-1.jason.1.x86_64 是从第三方存储库安装的,现在任何软件包更新似乎都需要旧版本的 apr,甚至没有注意到安装了较新的版本。
解决此解决方案的最明智方法是什么?不幸的是,我不知道哪个包需要此依赖项(有什么方法可以找出它?)
答案1
如果您想继续使用第三方 repo 但又需要使用早期版本,您可以执行yum downgrade apr
.
但是,您可以删除 apr(yum erase apr
),然后重新安装已删除的标准 repo 包。
[编辑1]:
看起来您的 32 位版本和 64 位版本的 apr 不匹配,您可以尝试运行yum update apr.i386 apr.x86_64
。您需要在启用第三方 repo 的情况下执行此操作。
答案2
@ACase 的建议yum erase apr
和yum downgrade apr
都很好,但是如果您想做更多的调查,看看有问题的应用程序是什么,您可以执行以下操作:
您可以检查哪些已安装的包需要阻塞“apr-1.3.12-1.jason.1.x86_64”包,如下所示;
# rpm -q --whatrequires apr
**apr-devel-1.2.7-11.el5_6.5** <--(this or something else in the list)
...
apr 是“apache 可移植运行时”,大概是由其他一些 httpd 相关软件包事务作为库安装的。
然后您可以使用以下命令查看该有问题的包的依赖关系;
# rpm -v -q --requires apr-devel
/sbin/ldconfig
libapr-1.so.0()(64bit)
libc.so.6()(64bit)
....
要查看新的您尝试从可以使用的存储库中安装的包;
# yum deplist apr
Finding dependencies:
package: apr.i386 1.2.7-11.el5_6.5
dependency: libc.so.6(GLIBC_2.1.3)
provider: glibc.i686 2.5-65
provider: glibc.i686 2.5-65.el5_7.
...
更一般地说,问题在于新旧软件包发生冲突,您必须通过决定要保留哪一组软件包以及删除哪一组软件包来解决问题。
我个人更喜欢继续使用 apr 包的发行版本,因为很多基于 apache 的软件都在使用它。
要查看 yum 尝试为您查找 deps 的疯狂详细输出,请添加 -v 标志;
# yum -v deplist apr
...
pkgsack time: 3.261
rpmdb time: 0.000
Finding dependencies:
Searching pkgSack for dep: /sbin/ldconfig
Potential match for /sbin/ldconfig from glibc-2.5-65.i686
Potential match for /sbin/ldconfig from glibc-2.5-65.x86_64
...