引言
KDE Neon 是我很喜欢的 Linux distro,最前瞻的 KDE,齐全的软件,LTS 等特点(还不会像 Ubuntu 那样日常崩溃)让它成为我日用的 Linux 发行版。
但是在使用时我还是遇到了一些问题,就比如那个 Discover,开了一次代理之后关闭代理,这个破商店还会走代理,以至它连不上网。
本文主要解决一个更棘手的软件依赖问题:qtbase-abi-5-12-8
问题
由于 KDE5 是基于 qt5 开发的,很多系统级 qt 组件的依赖是不能动的,所以有些软件会装不上。我遇到的第一个装不上的包就是 telegram-desktop,它就依赖了 qtbase-abi-5-12-8
,如果尝试安装,输出会是这样
... ...
telegram-desktop : 依赖: qtbase-abi-5-12-8
推荐:xxxxx 但是它将不会被安装
... ...
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
依赖关系一直是用 Linux 挺麻烦的一件事,算了,去官网下载 tg 了,而且版本更高。
解决
时至今日,累计下来用 Neon 应该有半年了,今日装了一下 qtcreator,出现了同样的依赖问题,想着 Google 一下看看有没有解决的办法。真让我给逮住了,issue
在这个 issue 中这一段脚本:abifix.sh
#!/bin/bash
$(mkdir -p ./qtbase-abi-5-12-8-fix/DEBIAN)
echo 'Package: qtbase-abi-5-12-8-fix
Version: 1.0
Section: custom
Priority: optional
Provides: qtbase-abi-5-12-8
Depends: libqt5core5a
Architecture: amd64
Essential: no
Installed-Size: 0
Maintainer: custom
Description: Fix lack of qtbase-abi-5-12-8 in KDE Neon
' > ./qtbase-abi-5-12-8-fix/DEBIAN/control
dpkg-deb --build ./qtbase-abi-5-12-8-fix
(部分修改)
解决了我的问题,运行后会打包出 qtbase-abi-5-12-8-fix.deb
,使用 sudo dpkg -i qtbase-abi-5-12-8.deb
安装成功,重新尝试 sudo apt install qtcreator
出现了相似的情况,不同的是,qtbase-abi-5-12-8
的依赖问题已经没有了,只剩一个 qtdeclarative-abi-5-12-8
。
分析
分析一下脚本:
- 创建了 deb 文件夹结构。
- 将 deb 包控制描述信息写入。
- 打包。
这三行脚本做了什么?先提取关键字 qtbase-abi-5-12-8
,可以看到
Provides: qtbase-abi-5-12-8
Depends: libqt5core5a
翻译一下:
- 提供 qtbase-abi-5-12-8
- 依赖 libqt5core5a
反过来也就可以理解为:libqt5core5a
提供了 qtbase-abi-5-12-8
这个依赖,那我们照猫画虎,先 Google 一下哪个包里面有 这个依赖 qtdeclarative-abi-5-12-8
,找到了一个包:libqt5qml5
替换进去,改一下代码。
代码:
#!/bin/bash
$(mkdir -p ./qtdeclarative-abi-5-12-8-fix/DEBIAN)
echo 'Package: qtdeclarative-abi-5-12-8-fix
Version: 1.0
Section: custom
Priority: optional
Provides: qtdeclarative-abi-5-12-8
Depends: libqt5qml5
Architecture: amd64
Essential: no
Installed-Size: 0
Maintainer: custom
Description: Fix lack of qtdeclarative-abi-5-12-8 in KDE Neon
' > ./qtdeclarative-abi-5-12-8-fix/DEBIAN/control
dpkg-deb --build ./qtdeclarative-abi-5-12-8-fix
执行,安装,再次尝试 sudo apt install qtcreator
,这次出现了喜闻乐见的输出
Q.E.D.