SUSE环境下shell脚本中为zypper预选依赖冲突解决选项
失败原因说明
你之前的尝试不生效的核心原因:
- 普通echo管道输入有时候无法匹配zypper的交互缓冲区读取时机,容易输入失效
-n/--non-interactive参数的默认逻辑是遇到依赖冲突直接取消,所以加了这个参数反而会默认选c--force参数仅强制安装同包名不同版本的软件,不会处理依赖缺失类的冲突
可用解决方案
方案1:使用zypper内置冲突解决参数(最稳定)
直接指定--force-resolution参数让zypper自动选择能完成安装的解决方案,搭配-y跳过所有交互确认即可:
zypper install -y --force-resolution libopenssl-devel
如果需要额外允许文件覆盖,可以加上--replacefiles参数。
方案2:强制指定选择序号
如果需要明确指定选方案2,用yes命令持续输出对应序号即可,适配zypper的交互读取逻辑:
yes 2 | zypper install libopenssl-devel
注意
强制忽略依赖安装的软件包可能存在功能缺失或运行异常的问题,如果后续使用该包出现报错,建议优先添加包含libopenssl0_9_8 = 0.9.8h的软件源后再正常安装。
内容的提问来源于stack exchange,提问作者Kumaresan P
相关产品推荐
相关产品推荐

