WSL(ubuntu2204)使用xfce4桌面打不开语言支持及配置WSL服务自启

news2024/11/17 3:37:27

语言支持报错

在图形桌面或命令行打开语言支持报错: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终端输入命令

wsl -d ubuntu2204 -u root sudo /etc/init.wsl start

查看wsl是否启动(Running)

C:\Users\itboone>wsl -l -v
  NAME          STATE           VERSION
* ubuntu2204    Running         2
  centos7       Stopped         2

 查看脚本服务是否启动( "+" 代表已启动)

itboone@localhost:/mnt/c/Users/itboone$ sudo service --status-all
 [ - ]  acpid
 [ - ]  alsa-utils
 [ - ]  anacron
 [ - ]  apparmor
 [ ? ]  apport
 [ - ]  avahi-daemon
 [ - ]  console-setup.sh
 [ - ]  cron
 [ + ]  dbus
 [ ? ]  hwclock.sh
 [ + ]  irqbalance
 [ - ]  kerneloops
 [ - ]  keyboard-setup.sh
 [ ? ]  kmod
 [ - ]  lightdm
 [ - ]  lm-sensors
 [ ? ]  plymouth
 [ ? ]  plymouth-log
 [ - ]  procps
 [ - ]  pulseaudio-enable-autospawn
 [ - ]  rsync
 [ - ]  saned
 [ - ]  screen-cleanup
 [ - ]  speech-dispatcher
 [ - ]  spice-vdagent
 [ - ]  udev
 [ - ]  ufw
 [ - ]  unattended-upgrades
 [ - ]  uuidd
 [ + ]  whoopsie
 [ - ]  x11-common
 [ + ]  xrdp

wsl参数说明

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

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

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

创建windows开机启动脚本

如过不想每次都通过终端命令来启动 wsl 及 init.wsl 服务,可以配置 Windows 启动时代理启动。

在 Windows 中使用快捷键 WIN+R 打开运行窗口,输入 shell:startup 打开 "启动" 目录。

创建文本文档 linux-start.txt 并修改后缀为 .vbs,内容如下 (vbhide表示隐藏命令行窗口):

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

重启 Windows 登录账户后就会执行 linux-start.vbs,通过vbs脚本来执行 wsl 以及 init.wsl 服务

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/354735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SCL】1200案例:天塔之光数码管显示液体混合水塔水位

使用scl编写天塔之光&数码管显示&液体混合&水塔水位 文章目录 目录 文章目录 前言 一、案例1:天塔之光 1.控制要求 2.编写程序 3.效果 二、案例2:液体混合 1.控制要求 2.编写程序 三、案例3:数码管显示 1.控制要求 2.编写程序 3…

转载:项目分析信息方法论

转载一篇最近看到的项目分析信息法:如何快速分析项目和如何详细分析项目。 一、如何快速分析项目? 可以从6个点进行分析,分别是:「流量效率,销转效率,交付效率,客单价,毛利率&…

【程序化天空盒】过程记录02:云扰动 边缘光 消散效果

写在前面 写在前面唉,最近筋疲力竭,课题组的东西一堆没做,才刚刚开始带着思考准备练习作品,从去年5月份开始到现在真得学了快一年了,转行学其他的真的好累,,不过还是加油! 下面是做…

zlib压缩原理

数据压缩的本质 去除数据中的冗余信息,对于ABABABABABABAB字样的字符串,AB出现了7次,占用14个字节,如果将该字符串编码为7AB,只占用3个字节。 为什么需要对数据压缩 数据需要存储或者传输,为了节省磁盘空…

ONNXRUNTUIME实例分割网络说明

ONNXRUNTUIME c使用(分割网络)与相关资料(暂记) initiate a env with an id name(使用id名称启动env) create session (创建会话 ) onnxenv -> sessioninputname [“x”] ,outputname [“t”]inputnodedim [[1,1,192,192…

Linux单一服务管理systemctl

基本上systemd这个启动服务机制只有systemctl命令来处理,所以全部的操作都需要使用systemctl systemctl管理单一服务 一般来说服务的启动有两个阶段,一个是开机是否启动,以及现在是否启动 systemctl【command】【unit】 command主要有&…

VS2017+OpenCV4.5.5 决策树-评估是否发放贷款

决策树是一种非参数的监督学习方法,主要用于分类和回归。 决策树结构 决策树在逻辑上以树的形式存在,包含根节点、内部结点和叶节点。 根节点:包含数据集中的所有数据的集合内部节点:每个内部节点为一个判断条件,并且…

mysql详解之innoDB

索引 Mysql由索引组织,所以索引是mysql多重要概念之一。 聚簇索引 InnoDB和MyISAm一样都是采用B树结构,但不同点在于InnoDB是聚簇索引(或聚集索引),将数据行直接放在叶子节点后面。 这里可能存在一个误区&#xff1…

【C语言】编程初学者入门训练(14)

文章目录131. kiki学结构体和指针132. kiki定义电子日历类133. 圣诞树134. 超级圣诞树131. kiki学结构体和指针 问题描述:KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数…

【人脸检测】Yolov5Face:优秀的one-stage人脸检测算法

论文题目:《YOLO5Face: Why Reinventing a Face Detector》 论文地址:https://arxiv.org/pdf/2105.12931.pdf 代码地址:https://github.com/deepcam-cn/yolov5-face 1.简介 近年来,CNN在人脸检测方面已经得到广泛的应用。但是许多…

【C++的OpenCV】第一课-opencv的间接和安装(Linux环境下)

第一课-目录一、基本介绍1.1 官网1.2 git源码1.3 介绍二、OpenCV的相关部署工作2.1 Linux平台下部署OpenCV一、基本介绍 1.1 官网 opencv官网 注意:官网为英文版本,可以使用浏览器自带的翻译插件进行翻译,真心不推荐大家去看别人翻译的&am…

过滤器和监听器

1、过滤器Filter 作用是防止SQL注入、参数过滤、防止页面攻击、空参数矫正、Token校验、Session验证、点击率统计等等; 使用Filter的步骤 新建类,实现Filter抽象类;重写init、doFilter、destroy方法;在SpringBoot入口中添加注解…

演示Ansible中的角色使用方法(ansible roles)

文章目录一、ansible 角色简介二、roles目录结构三、role存放的路径:配置文件ansible.cfg中定义四、创建目录结构五、playbook中使用rolesplaybook变量会覆盖roles中的定义变量六、控制任务执行顺序七、ansible—galaxy命令工具八、安装选择的角色1.从网上下载&…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(41-82集)

第41集:这里遇到个大坑,因为这种项目有很多页面,有时候有的页面忘了保存就会出错,还很难排查,浪费了我快半天的时间。可以把vscode的代码自动保存打开,以后就不会踩坑了。 第42集:没啥好说的。 …

判断字符串中的字符的类型isdecimal();isalpha();isdigit();isalnum()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断字符串中的字符的类型 isdecimal();isalpha();isdigit();isalnum() [太阳]选择题 对于代码中isdecimal()和isalnum()输出的结果是? s "ABc123&…

亿级高并发电商项目-- 实战篇 --万达商城项目 十一(编写商品搜索功能、操作商品同步到ES、安装RabbitMQ与Erlang,配置监听队列与消息队列)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

Sandboxie-沙箱软件-Plus版本(Qt)-主框架程序-SandMan.exe-创建语言文件-tr-Qt-语言国际化

文章目录1.功能介绍2.Qt语言国际化3.设置软件的语言版本4.作者答疑1.功能介绍 沙箱软件的增强版本采用Qt架构开发,核心模块与经典版本相同,本文主要介绍SandMan.exe这个主程序代码。在main.cpp这个入口函数里,有主窗口入口,如下所…

2.5|iot冯|方元-嵌入式linux系统开发入门|2.13+2.18

一、 Linux 指令操作题(共5题(共 20 分,每小题 4分)与系统工作、系统状态、工作目录、文件、目录、打包压缩与搜索等主题相关。1.文件1.1文件属性1.2文件类型属性字段的第1个字符表示文件类型,后9个字符中,…

【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享

来源:投稿 作者:LSC 编辑:学姐 比赛官网: https://www.dataglobal.cn/cmpt/signUpInfo200.html 任务描述 请参赛者设计智慧农业病虫害检测系统,给出一体化问题解决方案,鼓励参赛选手结合某一果园/农作物实际情况建立…

使用 URLSearchParams 解析和管理URL query参数

介绍 首先 URLSearchParams是一个构造函数,会生成一个URLSearchParams对象,参数类型: 不传 | string | object | URLSearchParams, 并且遇到特殊字符它会自动帮我们encode 和 decode const ur…