Oracle Linux 8.8上执行DNF命令遭遇依赖冲突问题求助
Oracle Linux 8.8上执行DNF命令遭遇依赖冲突问题求助
我在Oracle Linux 8.8上运行Oracle 23c,最近执行dnf相关命令时遇到了依赖冲突的错误,试过dnf update --skip-broken --nobest也没解决问题,想请教下该怎么处理?
错误信息如下:
Last metadata expiration check: 0:25:07 ago on Thu 09 May 2024 05:38:31 PM IST. Error: Problem: package oracle-database-free-23c-1.0-1.x86_64 from @System requires oracle-database-preinstall-23c, but none of the providers can be installed - package oracle-database-preinstall-23ai-1.0-2.el8.x86_64 from ol8_appstream obsoletes oracle-database-preinstall-23c provided by oracle-database-preinstall-23c-1.0-1.el8.x86_64 from @System - package oracle-database-preinstall-23ai-1.0-2.el8.x86_64 from ol8_appstream obsoletes oracle-database-preinstall-23c provided by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64 from ol8_developer - package oracle-database-preinstall-23ai-1.0-2.el8.x86_64 from ol8_appstream obsoletes oracle-database-preinstall-23c provided by oracle-database-preinstall-23c-1.0-1.el8.x86_64 from ol8...
问题分析
从报错信息能看出来核心矛盾:你当前安装的oracle-database-free-23c需要依赖oracle-database-preinstall-23c这个预安装包,但Oracle官方已经在ol8_appstream源里用oracle-database-preinstall-23ai包直接替代(obsoletes)了旧的23c版本预安装包,导致DNF找不到符合要求的依赖包,冲突就这么产生了。
解决方案(按优先级推荐)
- 方案一:升级Oracle数据库到23ai版本(最推荐)
23ai是23c的官方后续版本,Oracle本身就是用23ai的生态替代旧的23c,直接升级就能彻底解决依赖问题:
dnf upgrade oracle-database-free-23c
执行这个命令后,DNF会自动把你的23c数据库包替换成23ai版本,同时安装对应的oracle-database-preinstall-23ai,完美适配依赖链。
- 方案二:临时排除23ai预安装包(应急用,不推荐长期)
如果暂时不想升级数据库,可以通过排除23ai预安装包来绕过冲突:
dnf update --exclude=oracle-database-preinstall-23ai
但要注意,这种方法只是临时的治标之策,后续其他包更新可能还会出问题,而且Oracle已经不再维护23c的预安装包,长期用有风险。
- 方案三:锁定23c预安装包版本(极端情况用)
如果必须坚守23c版本,可以尝试安装旧版的23c预安装包并锁定版本,防止被替换:
dnf install oracle-database-preinstall-23c-1.0-1.el8.x86_64 dnf versionlock add oracle-database-preinstall-23c
不过这个方法依赖旧版本包还在源里可用,而且后续Oracle的更新可能会带来更多兼容性问题,非常不推荐长期使用。
备注:内容来源于stack exchange,提问作者Thelappillil Linson
相关产品推荐
相关产品推荐

