I'm trying to install BlueZ 5.50 on Ubuntu 16.04 because I need MIDI support.
I compiled and installed it as follows:
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
The problem is that it doesn't update /usr/sbin/bluetoothd
, which is the default version that is started when I reboot.
bluetoothd -v
results in 5.37
but ./src/bluetoothd -v
results in 5.50
.
The only version in the path seems to be the old version:
whereis bluetoothd
bluetoothd: /usr/sbin/bluetoothd /usr/share/man/man8/bluetoothd.8.gz
Why does the install script keep the old version? How can I update everything to the new version? Do I have to?
Right now, MIDI BLE seems to be working, even with the old version of bluetoothd.
If you compile a programm from sources and do not use pre-compiled dpkg packages, the dpkg packages will not be touched or changed in any way.
Normally, the
configure
step instructs the build to use /usr/local as install prefix, instead of /usr. This is to prevent self-compiled stuff to override binaries or other files that are shipped within a dpkg package.So you
bluetoothd
binary resides somewhere in /usr/local.Unfortunately or luckily, not really sure, the
make install
does place asystemd
service and target in /lib/systemd/system, which overrides the files from the dpkg packagebluez
.In my opinion, these two files should go into
/etc/systemd/system
to prevent e.g. an update ofbluez
overwriting your manually installed version. To make that, you also should add--with-systemdsystemunitdir=/etc/systemd/system
to yourconfigure
command and reinstall the new bluez and the old bluez.