在过去的某个时刻,我必须lightdm
通过以下方式禁用服务:
systemctl disable lightdm.service
或者我的 Debian with Cinnamon 桌面上有类似的东西。
不幸的是,我现在需要它,但运行:
systemctl start lightdm.service
每次电脑启动都不会让我开心,所以......
如何重新启用该lightdm
服务?因为刚刚运行:
systemctl enable lightdm.service
产生以下错误:
Synchronizing state of lightdm.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable lightdm
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.
之前也尝试过:
dpkg-reconfigure lightdm
无济于事。
答案1
lightdm.service
由于您面前的消息中给出的原因,启用该单元不会执行任何操作:服务单位没有[Install]
信息。这是因为人们不应该使用 来启用此服务systemctl enable
。显示管理器有自己特殊的启用/禁用机制。
该服务是 的可能替代品之一display-manager.service
,它是 的挂钩无论选择运行什么显示管理器。 display-manager.service
是一个符号链接,旨在指向任何实际的显示管理器服务单元文件是,如 systemd 用户手册所述。它Wants
在单元中是固定且硬连线的,其想法是,如果以服务图的起点graphical.target
启动,则通过该点启动所选择的显示管理器。graphical.target
这种象征性的联系当然是雇用员工的理想机会Debian 的“替代”系统。在显示管理器之间进行切换对于运行的所有包来说都是简单且一致的:
更新替代方案 --config display-manager.service
这确实是在 OpenSUSE 上是如何完成的,尽管它没有切换 systemd 单元:
更新替代方案 --config 默认显示管理器
所以当然“替代”系统是不是此处使用;可能性之间的切换,而不是由包维护者脚本中的定制代码来管理lightdm
,gdm3
,xdm
,以及其他读取特殊文件的包/etc/X11/default-display-manager
,并且在每个包中并不完全执行相同的操作。
一旦通过 运行了这些不同的定制 shell 脚本之一,dpkg-reconfigure
还必须确保引导程序的起始点是该graphical.target
单元,而不是multi-user.target
带有systemctl set-default
.
答案2
看起来你的服务是蒙面的。
要取消屏蔽,请运行:
systemctl unmask lightdm.service
然后运行:
systemctl daemon-reload
答案3
Lightdm 由 sysV init 风格的启动脚本(debian 8 - 11)通过 /etc/rc*.d/ 的符号链接管理
(systemd 只需通过 systemd-sysv-generator 调用它)
update-rc.d lightdm defaults
答案4
尝试临时安装一个替代显示管理器喜欢SDDM进而切换回 lightdm。在 Xubuntu 22.04.3 LTS 上测试。
sudo apt install sddm # Select sddm
sudo dpkg-reconfigure sddm # Switch back to lightdm
sudo reboot
sudo systemctl status lightdm.service # After reboot, should be active
其他有用的调试命令:
ls -rtla /var/log/lightdm # see logs files
less +G /var/log/lightdm/lightdm.log # see from the end
lightdm --test-mode --debug # test