OpenSUSE编译FFmpeg报gnutls缺失,安装gnutls后重启黑屏无登录提示
问题成因
- 操作时选择了忽略依赖强制安装
libunbound-devel-mini,该包的依赖标识this-is-only-for-build-envs明确说明它仅适用于系统构建环境,不能用于普通运行环境。强行安装后会覆盖系统默认的libunbound运行库,破坏原有依赖链,导致依赖DNS解析服务的NetworkManager、图形登录管理器等核心组件无法正常启动。 - 添加的是openSUSE Leap 15.2的专属更新源,若当前运行的系统版本不是Leap 15.2,会出现库版本不兼容问题,新安装的gnutls库与桌面环境依赖的版本不匹配,也会导致图形服务启动失败。
- 最初编译FFmpeg时的报错是因为缺少gnutls的开发文件,错误安装了运行用的
gnutls包而非开发包gnutls-devel,这才导致后续不必要的强制安装操作。
排查修复步骤
- 第一步:进入救援模式
重启系统,在GRUB启动菜单选择高级选项,选中救援模式启动;若没有救援模式选项,选中默认启动项按e编辑,找到以linux开头的行,在末尾添加init=/bin/bash,按Ctrl+X启动即可进入单用户命令行。 - 第二步:回滚错误操作
执行以下命令撤销之前的错误安装:# 删除添加的非匹配源 zypper rr openSUSE:Leap:15.2:Update # 卸载强制安装的四个异常包 zypper rm gnutls libgnutls-dane0 libopts25 libunbound-devel-mini # 修复系统依赖,自动回滚被替换的系统原生库 zypper verify --force-resolution # 刷新共享库缓存 ldconfig - 第三步:验证系统可启动
先将系统默认启动级别设为命令行模式,避免直接进图形界面报错:
重启后如果能正常进入命令行登录界面,说明系统核心功能已经恢复,再执行对应命令重装图形登录管理器:systemctl set-default multi-user.target reboot# GNOME桌面执行 zypper install --force gdm # KDE桌面执行 zypper install --force sddm # 切回图形启动模式 systemctl set-default graphical.target reboot - 第四步:正确安装FFmpeg编译依赖
系统恢复后,安装gnutls的开发包即可解决pkg-config找不到的问题:
之后重新执行FFmpeg的configure命令即可正常配置。zypper install gnutls-devel
内容的提问来源于stack exchange,提问作者Harry Boy
相关产品推荐
相关产品推荐

