You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BlueZ 5.47安装方法咨询及升级后旧版本守护进程切换问题

BlueZ 5.47 安装与版本切换指南

下面我来一步步帮你搞定这两个问题:

一、如何安装BlueZ 5.47?

首先得准备好编译依赖,不同Linux发行版的命令略有不同,这里以Debian/Ubuntu系列为例:

  • 先更新软件源列表:sudo apt update
  • 安装编译必需的工具和库:sudo apt install build-essential libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

接下来获取并编译BlueZ 5.47源码:

  • 下载官方源码包:wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz
  • 解压源码:tar xvf bluez-5.47.tar.xz
  • 进入源码目录:cd bluez-5.47

配置编译参数(这里推荐加上常用的启用选项,方便后续使用):

  • 运行配置脚本:./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-library --enable-experimental --enable-tools
  • 开始编译:make
  • 安装到系统:sudo make install

二、编译安装后重启仍启动旧版本,怎么切换到5.47?

这种情况大多是系统默认的蓝牙守护进程(bluetoothd)还是旧版本的二进制,或者systemd服务没指向新安装的文件。按以下步骤操作就能解决:

  1. 先确认新旧版本的位置:

    • 查看当前正在使用的bluetoothd路径:which bluetoothd,通常会显示旧版本的位置(比如/usr/sbin/bluetoothd)
    • 查找新编译的bluetoothd:sudo find /usr -name bluetoothd,如果按上面的--prefix=/usr安装,应该也是/usr/sbin/bluetoothd,但可能旧版本没被覆盖。
  2. 替换旧的二进制文件:

    • 先停止当前蓝牙服务:sudo systemctl stop bluetooth
    • 备份旧版本以防万一:sudo mv /usr/sbin/bluetoothd /usr/sbin/bluetoothd.old
    • 重新安装确保覆盖:sudo make install(如果还在源码目录的话,直接复制也可以:sudo cp ./src/bluetoothd /usr/sbin/)
  3. 检查并更新systemd服务配置:

    • 查看蓝牙服务文件的执行路径:cat /lib/systemd/system/bluetooth.service,重点看ExecStart行
    • 如果路径不对,编辑服务文件:sudo nano /lib/systemd/system/bluetooth.service,把ExecStart改成新的/usr/sbin/bluetoothd(通常后面还会带参数,比如--noplugin=sap,保留即可)
    • 重新加载systemd配置:sudo systemctl daemon-reload
  4. 验证并设置开机启动:

    • 启动蓝牙服务:sudo systemctl start bluetooth
    • 设置开机自启:sudo systemctl enable bluetooth
    • 检查版本:bluetoothd --version,如果显示5.47就说明成功了!

另外,为了防止系统更新时包管理器把版本换回旧的,可以锁定BlueZ包:sudo apt-mark hold bluez

内容的提问来源于stack exchange,提问作者Kotch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:21:18