安装 BlueZ 5.50 不会更新 bluetoothd

安装 BlueZ 5.50 不会更新 bluetoothd

我正在尝试在 Ubuntu 16.04 上安装 BlueZ 5.50,因为我需要 MIDI 支持。

我编译并安装如下:

sudo apt-get install libudev-dev
sudo apt-get install libical-dev
sudo apt-get install libreadline-dev
cd bluez-5.50
./configure --enable-midi
make -j8
sudo make install

问题是它没有更新/usr/sbin/bluetoothd,这是我重新启动时启动的默认版本。
bluetoothd -v导致5.37
./src/bluetoothd -v导致5.50

路径中唯一的版本似乎是旧版本:

whereis bluetoothd
bluetoothd: /usr/sbin/bluetoothd /usr/share/man/man8/bluetoothd.8.gz

为什么安装脚本会保留旧版本?我如何将所有内容更新到新版本?我必须这样做吗?

现在,即使使用旧版本的 bluetoothd,MIDI BLE 似乎也可以正常工作。

答案1

如果您从源代码编译程序并且不使用预编译的 dpkg 包,则 dpkg 包将不会受到任何影响或更改。

通常,该configure步骤指示构建使用/usr/本地作为安装前缀,而不是/usr。这是为了防止自编译的内容覆盖二进制文件或 dpkg 包中附带的其他文件。
因此你的bluetoothd二进制文件位于/usr/本地

root@localhost:~/bluez-5.50# find /usr/local -name bluetoothd
/usr/local/libexec/bluetooth/bluetoothd

不幸的是或幸运的是,不太确定,确实make installsystemd服务和目标放在/lib/systemd/系统,它将覆盖 dpkg 包中的文件bluez
在我看来,这两个文件应该放入/etc/systemd/system以防止更新bluez覆盖您手动安装的版本。为此,您还应该添加到命令--with-systemdsystemunitdir=/etc/systemd/systemconfigure并重新安装新的 bluez 和旧的 bluez。

root@localhost:~/bluez-5.50# ./configure --enable-midi --with-systemdsystemunitdir=/etc/systemd/system
root@localhost:~/bluez-5.50# make 
root@localhost:~/bluez-5.50# make install
root@localhost:~/bluez-5.50# apt-get install --reinstal bluez

相关内容