热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Win10子系统WSL(ubuntu2204)安装xfce4桌面打不开语言支持

语言支持报错在图形桌面或命令行打开语言支持报错:dbus.exceptions.DBusException:org.freedesktop.DBus.Error.F

语言支持报错

在图形桌面或命令行打开语言支持报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory

itboone@localhost:/$ sudo /usr/bin/gnome-language-selector
Traceback (most recent call last):
File "/usr/bin/gnome-language-selector", line 21, in on_activate
instance = GtkLanguageSelector(datadir=options.datadir,
File "/usr/lib/python3/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 185, in __init__
self.ac = aptdaemon.client.AptClient()
File "/usr/lib/python3/dist-packages/aptdaemon/client.py", line 1056, in __init__
self.bus = dbus.SystemBus()
File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 195, in __new__
return Bus.__new__(cls, Bus.TYPE_SYSTEM, mainloop=mainloop,
File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 102, in __new__
bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/python3/dist-packages/dbus/bus.py", line 124, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /run/dbus/system_bus_socket: 没有那个文件或目录

 一番搜索找到原因:缺少的文件是由dbus daemon服务创建的,但是这个服务没有启动。

手动启动dbus服务后发现:多一个dbus-daemon --system的服务:

itboone@localhost:/run$ ps -ef |grep dbus
itboone 96 8 0 16:31 ? 00:00:00 /usr/bin/dbus-launch --sh-syntax --exit-with-session xfce4-session
itboone 97 8 0 16:31 ? 00:00:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session
itboone 108 103 0 16:31 ? 00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 11 --address=unix:path=/home/itboone/.cache/at-spi/bus_14.0
itboone 371 9 0 16:33 pts/0 00:00:00 grep --color=auto dbus
itboone@localhost:/run$ sudo /etc/init.d/dbus start
* Starting system message bus dbus [ OK ]
itboone@localhost:/run$ ps -ef |grep dbus
itboone 96 8 0 16:31 ? 00:00:00 /usr/bin/dbus-launch --sh-syntax --exit-with-session xfce4-session
itboone 97 8 0 16:31 ? 00:00:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session
itboone 108 103 0 16:31 ? 00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 11 --address=unix:path=/home/itboone/.cache/at-spi/bus_14.0
message+ 391 8 0 16:34 ? 00:00:00 /usr/bin/dbus-daemon --system
itboone 976 9 0 16:34 pts/0 00:00:00 grep --color=auto dbus

查看/run/dbus/目录发现文件system_bus_socket已创建:

itboone@localhost:/run$ cd /run/dbus
itboone@localhost:/run/dbus$ ls
pid system_bus_socket

这时命令行启动语言支持

sudo /usr/bin/gnome-language-selector

发现可以正常打开

解决方法

dbus服务不能自启的原因尚未找到,但是可以使用笨方法解决,即加入开机启动服务。

通常在Linux中开机启动可以通过

  1. 编辑/etc/rc.loacl
  2. 在/etc/init.d/ 下添加启动脚本
  3. 配置systemd

但这几种方式在子系统中无法使用,我们可以通过 Windows 间接的启动子系统中的服务。

创建wsl启动脚本

进入任意 WSL 发行版中,创建并编辑文件:/etc/init.wsl

sudo vim /etc/init.wsl

脚本内容如下

#! /bin/sh
/etc/init.d/dbus start

 设置权限为可执行

sudo chmod +x /etc/init.wsl

这时候可以通过下面的命令来启停设置的服务

sudo /etc/init.wsl [start|stop|restart]

创建windows开机启动脚本

在 Windows 使用快捷键 WIN+R 打开运行窗口,输入 shell:startup 创建启动脚本 linux-start.vbs

Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d ubuntu2204 -u root /etc/init.wsl start", vbhide

wsl参数说明

-u  root 用于指定 wsl 的登录用户为 root

-d  ubuntu2204 用于指定 wsl 的发行版

注:-d 后面的发行版名称一定要替换为自己安装的版本(可通过 wsl -l 查看)

重启 Windows 登录账户后就会执行linux-start.vbs,通过VBS执行 init.wsl 中的服务。

wsl -l -v
sudo service --status-all

WSL 中有很多有用的服务,你可以按需删改 /etc/init.wsl ,但没必要塞很多东西进去影响你的启动速度,比如 mysql/mongodb 这些重度服务,可以需要的时候再启动,用完就停了。


参考资料

WSL 服务自动启动的正确方法https://zhuanlan.zhihu.com/p/47733615

Windows中的WSL2(子系统)开机启动配置​​​​​https://blog.csdn.net/hiqiming/article/details/105244147

WSL 的基本命令 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/basic-commands?source=recommendations

手动启动dbus以及dbus daemonhttps://blog.csdn.net/bw_yyziq/article/details/83505596

Failed to connect to socket /opt/local/var/run/dbus/system_bus_sockethttps://9to5answer.com/failed-to-connect-to-socket-opt-local-var-run-dbus-system_bus_socket-no-such-file-or-directory




推荐阅读
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
author-avatar
mobiledu2502857407
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有