OpenSUSE 15.3升级到15.4过程记录
目前已经成功升级到OpenSUSE 15.4,并且将大部分遇到的问题已经解决。
如果你也有升级的想法,但愿你不会遇到跟我一样的问题。
由于OpenSUSE 一直以来的 不携带h264解码器安装包,需要通过VLC提供的镜像源安装H264解码器,因此升级后遇到的问题大部分跟 H264解码器有关。
升级到15.4操作
常规的升级方式是:
# Refresh all repositories to 15.4
sudo zypper --releasever=15.4 ref
# Update the distro to 15.4
sudo zypper --releasever=15.4 dup -y
这里,由于个人定制了一些安装包版本,因此升级过程中遇到的问题比较多,使用zypper dup
升级提示非常多的依赖问题,因此放弃了使用dup
方式,是选择了zypper update
方式。
sudo zypper --releasever=15.4 up
这时,升级的软件包不包含依赖有问题的软件包,并且达到了系统升级目的。
升级后,继续一个个的解决依赖有问题的软件包。
VLC播放器缺少H264解码器问题
这个问题是每次升级系统后都会出现的,因为升级后的系统没有安装H264解码器,所以VLC播放器无法播放视频。
添加VLC官方提供的镜像源是:
sudo zypper ar https://download.videolan.org/pub/vlc/SuSE/15.4/ VLC
添加完成后,重新安装VLC播放器:
sudo zypper ref
sudo zypper in -f --from VLC vlc libavcodec vlc-codecs ffmpeg
安装成功后,我们就可以使用VLC播放 h264编码的视频文件了。
虽然,VLC播放器安装成功了,但是播放视频时无法快进,因此选择源码编译VLC播放器。
wget -c http://get.videolan.org/vlc/3.0.17.3/vlc-3.0.17.3.tar.xz
tar Jxvf vlc-3.0.17.3.tar.xz
./configure --prefix=/usr
make -j$(nproc)
安装过程可能会提示缺少一些依赖包,缺啥安装啥就可以了。
编译过程遇到下面的问题:
ERROR : codec/avcodec/vaapi.c:54: 26: field ‘hw_ctx’ has incomplete type
struct vaapi_context hw_ctx;
^~~~~~
make: *** [Makefile:1445: all] Error 2
查看了源码,当前使用库已经弃用此结构体,先禁用此选项。
但接下来又遇到了其他问题,比如跟chromecast有关的问题,我就禁用了chromecast的支持。
最终使用下面方法编译成功了:
./configure --prefix=/usr --disable-a52 --disable-libva --disable-chromecast
解决了VLC播放器使用的各种问题。
mpv播放器h264解码器问题
新升级15.4版本系统的mpv存在 h264解码器问题,运行后报错信息如下:
mpv clash_for_android.mp4
(+) Video --vid=1 (*) (h264 1080x2240 47.550fps)
File tags:
Comment: Recorded by scrcpy 1.17
Failed to initialize a decoder for codec 'h264'.
Video: no video
No video or audio streams selected.
按照VLC的方式安装h264解码器依然没解决问题,虽然h264解码器库安装了,但官方提供的mpv安装包与其自带的vlc编译过程都是不携带h264解码器的。
现在有两个选择:
- 找到提供支持h264解码器库的mpv安装包的镜像源。
- 编译
mpv
播放器源码方式。
我选择了源码编译mpv ,具体操作如下:
git clone https://github.com/mpv-player/mpv.git
cd mpv
git checkout v0.34.1
./bootstrap.py
./waf configure --prefix=/usr
./waf build
sudo ./waf install
如果编译顺利的话,就可以使用mpv播放器了。
但编译时还是有一些依赖问题,比如下面这个关键问题:
INFO:cfg:err: Package xscrnsaver was not found in the pkg-config search path.
Perhaps you should add the directory containing `xscrnsaver.pc' to the PKG_CONFIG_PATH environment variable
No package 'xscrnsaver' found
Package xscrnsaver was not found in the pkg-config search path.
Perhaps you should add the directory containing `xscrnsaverpc' to the PKG_CONFIG_PATH environment variable
No package 'xscrnsaver' found
INFO:cfg:from /apps/code/github/mpv-0.34.1: The configuration failed
INFO:cfg:no ('x11 >= 1.0.0 xscrnsaver >= 1.0.0 xext >= 1.0.0 xinerama >= 1.0.0 xrandr >= 1.2.0' not found)
no ('x11 >= 1.0.0 xscrnsaver >= 1.0.0 xext >= 1.0.0 xinerama >= 1.0.0 xrandr >= 1.2.0' not found)
INFO:waflib:no ('x11 >= 1.0.0 xscrnsaver >= 1.0.0 xext >= 1.0.0 xinerama >= 1.0.0 xrandr >= 1.2.0' not found)
Checking for X11 : no ('x11 >= 1.0.0 xscrnsaver >= 1.0.0 xext >= 1.0.0 xinerama >= 1.0.0 xrandr >= 1.2.0' not found)
这个问题的解决方法:
sudo zypper in -y xscreensaver libXss-devel
之后就非常顺利的编译成功了。
更详细的mpv编译过程请阅读 《源码编译系列之mpv播放器编译教程》文章。
Nvidia显卡驱动问题
如果你没有锁定默认的显卡驱动(在Yast2软件管理中可以设置锁定显卡驱动不更新),那么可能会出现显卡使用问题,因此重新安装显卡驱动是有必要的。
N卡驱动安装包来自于官网下载,Nvidia驱动地址。
下载完驱动包(xxxx.run)后,继续下面的安装过程。
当然,安装显卡驱动是不可以在图形界面运行的,切换到命令行界面进行安装。
# 禁用开源显卡驱动(Nvidia驱动自动会添加,因此不需要手工添加下面内容)
sudo cat << END > /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
blacklist nouveau
END
# 设置下次启动时使用命令行界面
sudo systemctl set default multi-user.target
# 重启系统
reboot
# 开始安装显卡驱动
sh /path/to/xxxx.run
# 安装成功后,需要切换会图形界面
# 设置下次启动时使用图形界面
sudo systemctl set default graphical.target
reboot
最后
总结一下,升级前后的对比情况,毕竟目前 15.4版本是候选版本,还没有发布稳定版本,所以发这篇文章的时候,我就是尝鲜一下。
- 升级后对4K分辨率显示效果更好,可能得益于 KDE Plasma 升级到了 5.24 LTS 版本吧。
- 多音频输出源切换更简单了,可以在系统托盘的小喇叭里直接选择不同输入输出源,以前需要点开设置窗口切换。
- 升级后显卡驱动也存在不稳定情况,比如Blender渲染比较大的文件时就直接白屏了。
- 其他个人编译的软件除了跟视频解码相关的软件外都没有受到影响。
这次升级还是比较顺利,不过还在继续运行一段时间,发现一个问题解决一个问题了。
最后,给大家的建议时,升级时使用 zypper up
命令升级,这样可以避免升级时的一些问题。
本来已经写完这篇文章了,但还没保存这篇文章显卡驱动就又挂掉了,还要有自动保存功能,不然就要抓狂啦。。。
看来,驱动的问题还是比较明显的,显卡驱动具体什么原因分析起来还真的比较难…