引言

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

分析

分析一下脚本:

  1. 创建了 deb 文件夹结构。
  2. 将 deb 包控制描述信息写入。
  3. 打包。

这三行脚本做了什么?先提取关键字 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,这次出现了喜闻乐见的输出

IMG_20220128_134417_810

Q.E.D.