当前位置:首页 » 《我的小黑屋》 » 正文

解决WSL2中Ubuntu-22.04找不到bus的错误

1 人参与  2024年05月02日 15:38  分类 : 《我的小黑屋》  评论

点击全文阅读


项目场景:

对于systemd系统来说,DBUS是必不可少的工具,它是进程间通讯的桥梁。


问题描述

当我们在WSL2中安装QQ音乐的时候,打开崩溃,具体的提示错误是:Failed to connect to the bus: Failed to connect to socket /run/user/1000/bus: No such file or directory

意思就是没有/run/user/1000/bus这个文件,我们去这个目录下面确实没找到这个文件。

ls /run/user/1000/dbus-1  gnupg  pk-debconf-socket  pulse  snapd-session-agent.socket  systemd  wayland-0  wayland-0.lock

简单解释下:
1000是除了root用户外你创建的第一个用户ID,第二个ID是1001。

有些软件可能能够运行,但是像QQ音乐Linux版,没有这个文件就直接崩溃或不出声音。


原因分析:

DBUS简单理解就是用于处理进程间通讯的桥梁,用来在不同的Applications中相互传递消息。它的效率很高,很多发行版中都集成了。

有些Applications依赖这个东西,如果没有的话就不能正常运行。废话不多说,由于DBUS很复杂,有兴趣的可以自行搜索学习下。这里,我只说解决方法。


解决方案:

其实是缺少了一个包,我们搜索dbus看下就明白了。

dpkg -l | grep dbusii  at-spi2-core                         2.44.0-3                                amd64        Assistive Technology Service Provider Interface (dbus core)ii  dbus                                 1.12.20-2ubuntu4.1                      amd64        simple interprocess messaging system (daemon and utilities)ii  dbus-x11                             1.12.20-2ubuntu4.1                      amd64        simple interprocess messaging system (X11 deps)ii  libdbus-1-3:amd64                    1.12.20-2ubuntu4.1                      amd64        simple interprocess messaging system (library)ii  libdbusmenu-glib4:amd64              16.04.1+18.10.20180917-0ubuntu8         amd64        library for passing menus over DBusii  libdbusmenu-gtk3-4:amd64             16.04.1+18.10.20180917-0ubuntu8         amd64        library for passing menus over DBus - GTK+ versionii  libnet-dbus-perl                     1.2.0-1build3                           amd64        Perl extension for the DBus bindingsii  python3-dbus                         1.2.18-3build1                          amd64        simple interprocess messaging system (Python 3 interface)

这里少了一个包dbus-user-session,装上这个包就不会报错了。

sudo apt install dbus-user-session

我们看下这个包的描述信息,重点看Description:

apt info dbus-user-sessionPackage: dbus-user-sessionVersion: 1.12.20-2ubuntu4.1Priority: optionalSection: adminSource: dbusOrigin: UbuntuMaintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>Bugs: https://bugs.launchpad.net/ubuntu/+filebugInstalled-Size: 133 kBProvides: dbus-session-bus, default-dbus-session-busDepends: dbus (>= 1.12.20-2ubuntu4.1), libpam-systemd, systemdRecommends: systemd-sysvBreaks: dbus-x11 (<< 1.9.10-2~), policykit-1 (<< 0.105-12~), udisks2 (<< 2.1.5-2~)Homepage: https://dbus.freedesktop.org/Task: server-minimal, print-server, ubuntu-desktop-minimal, ubuntu-desktop, cloud-image, ubuntu-desktop-raspi, ubuntu-desktop-raspi, server, ubuntu-server-raspi, ubuntu-server-raspi, kubuntu-desktop, xubuntu-core, xubuntu-desktop, lubuntu-desktop, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop, ubuntu-budgie-desktop-raspi, ubuntu-budgie-desktop-raspiDownload-Size: 9442 BAPT-Manual-Installed: yesAPT-Sources: http://mirrors.aliyun.com/ubuntu jammy-security/main amd64 PackagesDescription: simple interprocess messaging system (systemd --user integration) D-Bus is a message bus, used for sending messages between applications. Conceptually, it fits somewhere in between raw sockets and CORBA in terms of complexity. . On systemd systems, this package opts in to the session model in which a user's session starts the first time they log in, and does not end until all their login sessions have ended. This model merges all parallel non-graphical login sessions (text mode, ssh, cron, etc.), and up to one graphical session, into a single "user-session" or "super-session" within which all background D-Bus services are shared. . Multiple graphical sessions per user are not currently supported in this mode; as a result, it is particularly suitable for gdm, which responds to requests to open a parallel graphical session by switching to the existing graphical session and unlocking it. . To retain dbus' traditional session semantics, in which login sessions are artificially isolated from each other, remove this package and install dbus-x11 instead. . See the dbus package description for more information about D-Bus in general.N: There is 1 additional record. Please use the '-a' switch to see it

简单解释下:
意思就是这个东西是用来进程间通信的消息库,这个是依赖systemd系统的,在用户第一次登录进来开始一个会话,直到所有的登录会话都结束它才结束。

总结:

对于必须依赖这个包的程序有用,能正常运行的可以不装。


点击全文阅读


本文链接:http://zhangshiyu.com/post/102923.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1