我正在尝试在 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
为什么安装脚本保留旧版本?如何将所有内容更新到新版本?我一定要吗?
现在,即使使用旧版本的蓝牙,MIDI BLE 似乎也可以正常工作。
如果您从源代码编译程序并且不使用预编译的 dpkg 包,则不会以任何方式触及或更改 dpkg 包。
通常,该
configure
步骤指示构建使用/usr/local作为安装前缀,而不是/usr。这是为了防止自编译的东西覆盖 dpkg 包中附带的二进制文件或其他文件。所以你
bluetoothd
的二进制文件位于/usr/local的某个地方。不幸或幸运的是,不太确定,确实在/lib/systemd/system
make install
中放置了一个systemd
服务和目标,它覆盖了 dpkg package 中的文件。 在我看来,这两个文件应该进入以防止例如覆盖您手动安装的版本的更新。为此,您还应该添加命令并重新安装新的 bluez 和旧的 bluez。bluez
/etc/systemd/system
bluez
--with-systemdsystemunitdir=/etc/systemd/system
configure