在 Archlinux 中启动 spectacle 报错 lapack 的解决方法
发现问题
当我像往常一样按下快捷键进行截图的时候,突然 KDE 报了一个错误通知。1
Could not activate remote peer 'org.kde.spectacle': startup job failed
从这个通知,看不出来到底问题出在哪,只知道 spectacle 无法启动。于是我决定用命令行运行一遍 spectacle.
命令行运行后错误消息给的很精准,问题立马暴露出来了。1
spectacle: symbol lookup error: /usr/lib/liblapack.so.3: undefined symbol: taa_
很明显问题在于 lapack 这个看名字像是和线性代数有关的库。
解决问题
竟然知道了问题出在 lapack 这个库上,那么就要想办法解决这个库了。
解法一:降级 lapack
在 archlinux 论坛上,我看到有人说,这由 lapack 3.12.1 这个版本而导致的问题,只要降级到 3.12.0 就没有问题了。
于是我着手安装 downgrade 这个工具,准备降级 lapack。1
sudo pacman -S downgrade
安装好 downgrade 之后,使用下面这个命令进行降级。1
sudo downgrade lapack
在 downgrade 界面中,选择 lapack 3.12.0-5 版本,进行降级。
降级完成之后,再次运行 spectacle 已经没有任何问题了,可以正常使用了。
解法二:使用其他的线性代数库替代 lapack
正所谓,降级只是缓兵之计。
降级之后,如果不排除这个 lapack 包在更新之外的话,只要 lapack 还没解决这个问题,每次更新都要手动降级 lapack 一遍,实在是麻烦。
如果把 lapack 排除在升级之外,之后就需要我们自己去注意 lapack 的版本升级了,万一忘记了,岂不是就要一直用旧版的吗😰,直到旧版再次出现问题,才能够想起来升到更新的版本。简言之,就是对于我这种喜欢用最新的包的 archlinux 用户来说,强迫症犯了。
所以我们可以用其他的库来代替出问题的库。
这里我在 archlinuxcn 交流群中,发现了 blas-openblas 这个库,这个库就不会让 spectacle 出现问题,所以直接安装。1
sudo pacman -S blas-openblas
在安装的过程中,把冲突的包全部移除(lapack 包含于其中),安装完成之后。spectacle 就可以正常运行了。