我正在使用 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 Xorg
和pstree
),找到了 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
或-s
flagaptitude
我们可以安全地调查这些问题。