Tech Nuggets (15)

Cannot mix incompatible Qt library

Posted:

AUR のアップデートを実施したところ、表題のエラーで flameshotcopyq が起動できなくなった。qt5-styleplugins をアンインストールすることで解決した。

症状

以下のエラーで起動に失敗する。

$ flameshot

Cannot mix incompatible Qt library (5.15.2) with this library (5.15.3)
fish: Job 1, 'flameshot' terminated by signal SIGABRT (Abort)
$ copyq

ERROR: [default] QtFatal: Cannot mix incompatible Qt library (5.15.2) with this library (5.15.3)
terminate called after throwing an instance of '(anonymous namespace)::ExceptionQtFatal'
  what():  Cannot mix incompatible Qt library (5.15.2) with this library (5.15.3)
fish: Job 1, 'copyq' terminated by signal SIGABRT (Abort)

調査

上のやりとりから qt5 本体ではなく、qt5-styleplugins が原因になりうることがわかった。 AURヘルパー paru を使ってパッケージの情報を確認してみる。

$ paru -Qi qt5-styleplugins
Name            : qt5-styleplugins
Version         : 5.0.0.20170311-26
Description     : Additional style plugins for Qt5
Architecture    : x86_64
URL             : https://github.com/qt/qtstyleplugins
Licenses        : LGPL
Groups          : None
Provides        : None
Depends On      : qt5-base  gtk2
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 1138.35 KiB
Packager        : Unknown Packager
Build Date      : Wed Dec 30 14:05:40 2020
Install Date    : Wed Dec 30 14:05:55 2020
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : None

Explicitly installed となっているが、いつ、どんな目的でインストールしたか思い出せない。 念の為 whoneeds コマンドを使って qt5-styleplugins に依存するパッケージの有無を確認する。

$ whoneeds qt5-styleplugins
Packages that depend on [qt5-styleplugins]

$

qt5-styleplugins に依存するパッケージは存在しないことがわかった。

アンインストール

先に参照した GitHub 上のやりとりでは qt5-styleplugins のアップデートで問題が解決したとあるが、 不必要なパッケージなのでアンインストールすることにした。

$ paru -Rs qt5-styleplugins

この状態で flameshotcopyq の両方が問題なく起動することが確認できた。

あとがき

qt5-styleplugins を何故インストールしたのか一向に思い出せない。 一時の興味関心からインストールして、そのまま放置しているパッケージが他にもたくさんある気がする。

Explicitly installed なパッケージは $ pacman -Qe でリストアップできる。

$ man pacman

...

QUERY OPTIONS (APPLY TO -Q)

  -e, --explicit
    Restrict or filter output to explicitly installed packages. This option
    can be combined with -t to list explicitly installed packages that are
    not required by any other package.

しかし、下のように膨大な数のパッケージがヒットしてしまう。

$ pacman -Qe | wc -l
444

... including ones installed as part of a group and as part of the base install.

list explicit installed packages / Pacman & Package Upgrade Issues / Arch Linux Forums

大掃除はしたいけれど、どうにも面倒だ。 なにかいい方法はないだろうか。