为什么我的系统没有使用 Wayland,但是我安装了 Wayland 包?

为什么我的系统没有使用 Wayland,但是我安装了 Wayland 包?

我正在使用 Ubuntu MATE 17.10。发行说明从未提及有关 Wayland 的任何内容,我一直认为这个系统正在使用 Xorg 显示服务器。

然而今天我照常

sudo apt update && sudo apt full-upgrade

并注意到输出包括:

The following packages will be upgraded:
  libwayland-client0 libwayland-cursor0 libwayland-server0 [...]

我想,这很奇怪。我的系统到底在使用 Wayland 吗?

作为Byte Commander 在聊天中建议,我查找正在运行的进程(使用pgrep Xorgpstree),找到了 Xorg 但没有找到 Wayland。所以我很确定 Wayland 没有运行。我查找了 Wayland 包:

dpkg -l | grep [Ww]ayland
ii  kwayland-data                         4:5.38.0-0ubuntu1                        all          Qt library wrapper for Wayland libraries - data files
ii  kwayland-integration:amd64            4:5.10.5-0ubuntu1                        amd64        kwayland runtime integration plugins
ii  libkf5waylandclient5:amd64            4:5.38.0-0ubuntu1                        amd64        Qt library wrapper for Wayland libraries
ii  libqt5waylandclient5:amd64            5.9.1-2                                  amd64        QtWayland client library
ii  libqt5waylandcompositor5:amd64        5.9.1-2                                  amd64        QtWayland compositor library
ii  libwayland-client0:amd64              1.14.0-1ubuntu0.1                        amd64        wayland compositor infrastructure - client library
ii  libwayland-cursor0:amd64              1.14.0-1ubuntu0.1                        amd64        wayland compositor infrastructure - cursor library
ii  libwayland-egl1-mesa:amd64            17.2.8-0ubuntu0~17.10.1                  amd64        implementation of the Wayland EGL platform -- runtime
ii  libwayland-server0:amd64              1.14.0-1ubuntu0.1                        amd64        wayland compositor infrastructure - server library
ii  qtwayland5:amd64                      5.9.1-2                                  amd64        QtWayland platform plugin

为什么我没有使用 Wayland,但却有这些与 Wayland 相关的包?

答案1

谢谢字节指挥官伊莱亚·卡根提出建议在聊天中我能弄清楚这些包是作为依赖项安装的。

作为建议我模拟删除了与 Wayland 相关的软件包...当我尝试假装删除全部与 Wayland 相关的软件包...

apt remove '.*wayland.*' -s

结果看起来像是世界末日,全屏终端上全是被删除的软件包,包括整个ubuntu-mate-desktop元包和它的所有附件、xorg包(哎呀!)和marco(MATE 的默认窗口管理器)。

但仅仅移除kwayland-data似乎只会移除其他几个神秘的包裹kwayland-integration并且libkf5waylandclient5......

伊莱亚·卡根建议我尝试询问aptitude why我是否有这些包裹,例如

$ aptitude why kwayland-data
i   konsole              Depends    libkf5windowsystem5 (>= 4.96.0)                           
i A libkf5windowsystem5  Recommends kwayland-integration                                      
i A kwayland-integration Depends    libkf5waylandclient5 (>= 4:5.27.0+p16.10+git20161029.2052)
i A libkf5waylandclient5 Depends    kwayland-data (= 4:5.38.0-0ubuntu1) 

啊!这很有道理。我安装了 Konsole,因为其他终端仿真器不支持 CTL

通过aptitude why像坚持不懈的小孩一样反复询问,可以找出为什么需要或安装了某个特定的包,例如:

$ aptitude why libwayland-egl1-mesa
i   libwebkit2gtk-4.0-37 Depends libwayland-egl1-mesa (>= 10.0.2) | libwayland-egl1
$ aptitude why libwayland-cursor0
i   libgtk-3-0 Depends libwayland-cursor0 (>= 1.9.91)
$ aptitude why libgtk-3-0
i   mate-utils Depends libgtk-3-0 (>= 3.16.2)
$ aptitude why mate-utils
i   ubuntu-mate-desktop Depends mate-utils

模拟删除类似的包libgtk-3-0(小心不要真正删除它们......)可以揭示更多有关正在起作用的依赖结构的信息。

结论

我拥有这些软件包是因为其他软件包意外地依赖它们。有些软件包(例如 )是kwayland-data我自己安装的非必需软件包的依赖项推荐的软件包的依赖项,可以安全删除,但其他软件包(例如 )libwayland-egl1-mesa是系统不可或缺的软件包的依赖项,删除它们将是灾难性的!使用 APT--simulate-sflagaptitude我们可以安全地调查这些问题。

相关内容