KDE解决Could not start d-bus. Can you call qdbus?

解决LinuxMint KDE无法启动问题
本文介绍了一种LinuxMint KDE环境下无法启动到桌面的解决方案,通过修改qdbus路径,解决了由kde4-config指向错误导致的问题。

最近linuxmint-kde更新,不知怎么进不去KDE桌面。弹出Could not start d-bus. Can you call qdbus

我尝试了

sudo apt-get install qdbus

sudo apt-get install qdbus-qt5

因为都正常安装所以没解决。

后来搜索网上发现了这个BUG的讨论

https://bugs.launchpad.net/ubuntu/+source/kde-workspace/+bug/1304805

但是方法些许不适用,但是让我找到了些方向。

sudo vim /usr/bin/startkde 查看KDE启动脚本。

找到qdbus的定义,发现他的路径是由kde4-config --qt-binaries这个命令决定的。

<strong>  qbindir=`$bindir/kde4-config --qt-binaries`
  qdbus=$qbindir/qdbus</strong>
试着执行了下 kde4-config --qt-binaries 发现输出 /bin路径

而我在/bin路径下找不到qdbus,而qdbus是处在/usr/bin 路径下。

解决办法:

可以直接硬链接。 ln -s /usr/bin/qdbus /bin 之后重启就OK了。
前提 qt已正常安装

除了以上的方法,还有可能是/usr/bin下存在qt配置文件,改变了qt的使用。

删除/usr/bin下的qt配置文件

—————————————————————————————————

<think> 嗯,用户这次询问的是D-Bus中的proxy概念。从之前的对话看,用户正在系统性地学习D-Bus框架,已经了解过IPC基本概念和三层架构,现在深入到具体组件了。 用户可能正在开发需要进程通信的应用,或者研究Linux桌面环境的工作原理。考虑到D-Bus在GNOME/KDE等环境的核心地位,用户或许是嵌入式开发者或系统程序员。ta连续三次都要求相同的问题格式,说明在整理学习笔记,需要结构化信息。 关于proxy,需要强调它作为远程对象本地代表的特性。用户可能混淆了普通对象代理模式与D-Bus代理的特殊性,要突出总线认证和序列化机制。上次解释IPC时提到过安全性,这次可以关联说明proxy如何实现安全调用。 需要避免深入GLib/GObject细节(除非用户追问),但可以点明不同语言绑定的实现差异。用户似乎偏好具体场景的举例,比如之前对Makefile路径的追问,这次用蓝牙服务的例子应该能帮助理解。 最后的问题设计要延续知识链:从代理机制自然过渡到异步调用、信号处理等关联特性,第四个问题特意加入性能考量,因为用户之前关注过系统资源相关话题(参考OpenWrt编译的提问)。 </think> 在 D-Bus 中,**Proxy(代理)** 是一个**本地对象**,用于**透明地代表远程服务对象**。其核心作用是为应用程序提供访问远程服务的本地接口,隐藏底层通信细节。以下是关键特性解析: --- ### 代理的核心机制 1. **透明远程调用** 开发者通过调用本地代理对象的方法(如 `proxy.GetAll()`),代理自动: - 将方法转换为 D-Bus 消息 - 通过总线发送给远程服务 - 接收并解析响应,返回给调用方 ```python # Python 示例(使用 dbus-python) proxy = bus.get_object("com.example.Service", "/com/example/Object") result = proxy.GetAll(dbus_interface="com.example.Interface") # 代理转发远程调用 ``` 2. **接口映射** 代理需绑定到远程对象的 **D-Bus 接口**(如 `org.freedesktop.DBus.Properties`),严格匹配接口定义的方法/信号。 3. **异步支持** 现代库(如 GDBus、sd-bus)通过代理提供异步调用: ```c // C 示例(GDBus) g_dbus_proxy_call(proxy, "MethodName", parameters, G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback)on_method_complete, NULL); ``` --- ### 代理的层级作用 | 层级 | 功能描述 | |-------------|--------------------------------------------------------------------------| | **对象代理** | 绑定到特定对象路径(如 `/org/bluez/hci0`),代表一个远程 D-Bus 对象实例 | | **接口代理** | 实现特定接口(如 `org.bluez.Device1`),提供该接口的方法和信号 | | **方法代理** | 封装单个方法的调用逻辑,处理参数序列化/反序列化 | --- ### 典型工作流程 ```mermaid sequenceDiagram participant App as 应用程序 participant Proxy as 本地代理 participant Bus as D-Bus 总线 participant Service as 远程服务 App->>Proxy: 调用方法(如 SetBrightness(50)) Proxy->>Bus: 发送方法调用消息(序列化参数) Bus->>Service: 路由消息到目标服务 Service->>Bus: 返回响应(含执行结果) Bus->>Proxy: 传递响应消息 Proxy->>App: 反序列化结果并返回 ``` --- ### 实际应用场景 - **桌面环境**:GNOME 通过代理控制网络管理器(`org.freedesktop.NetworkManager`) - **硬件交互**:蓝牙服务(BlueZ)的 `/org/bluez` 对象代理管理设备连接 - **安全隔离**:代理自动处理 SELinux/PolicyKit 权限验证
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值