1

On my Ubuntu 16.04.2 LTS, when I run dbus-uuidgen it returns:

dbus-uuidgen: /usr/local/lib/libdbus-1.so.3: version `LIBDBUS_PRIVATE_1.10.8' not found (required by dbus-uuidgen)

the documentation says it should:

print a new uuid made up out of thin air.

But I have a /usr/local/lib/libdbus-1.so.3 as a link to /usr/local/lib/libdbus-1.so.3.16.4

This problem occured after I installed dbus and bluez from source and rebooted the system, so certain services like login service could not load at boot, so I had to remove dbus and bluez and certain dependencies (along with ubuntu-desktop) from recovery mode, to get the login service to start and login as the normal user, and reinstall dbus again. But now whenever I try to install anything using apt-get the dbus-uuid error causes the installation to stop. What I find odd is that the /var/lib/dbus/machine-id and /etc/machine-id files contains an ID when rebooting. which I believe proves that the dbus-uuidgen works at boot.

An output sample:

$sudo apt-get install bluez
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  dbus
Suggested packages:
  dbus-user-session | dbus-x11
The following NEW packages will be installed:
  bluez dbus
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,041 kB of archives.
After this operation, 4,767 kB of additional disk space will be used.
Do you want to continue? [Y/n] Get:1 http://ma.archive.ubuntu.com/ubuntu xenial-updates/main amd64 dbus amd64 1.10.6-1ubuntu3.3 [142 kB]
Get:2 http://ma.archive.ubuntu.com/ubuntu xenial/main amd64 bluez amd64 5.37-0ubuntu5 [899 kB]
Fetched 1,041 kB in 2s (383 kB/s)
Selecting previously unselected package dbus.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 270712 files and directories currently installed.)
Preparing to unpack .../dbus_1.10.6-1ubuntu3.3_amd64.deb ...
Unpacking dbus (1.10.6-1ubuntu3.3) ...
Selecting previously unselected package bluez.
Preparing to unpack .../bluez_5.37-0ubuntu5_amd64.deb ...
Unpacking bluez (5.37-0ubuntu5) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db (2.7.5-1) ...
Setting up dbus (1.10.6-1ubuntu3.3) ...
dbus-uuidgen: /usr/local/lib/libdbus-1.so.3: version LIBDBUS_PRIVATE_1.10.18' not found (required by dbus-uuidgen)
dpkg: error processing package dbus (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of bluez:
 bluez depends on dbus; however:
  Package dbus is not configured yet.

dpkg: error processing package bluez (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 dbus
 bluez
Munty
  • 21
  • comment in /etc/ld.so.conf.d/libc.conf the entry /usr/local/lib out and run sudo ldconfig -v –  May 14 '17 at 12:50
  • I ran it but the error is persisting. but now the link is in /lib/x86_64-linux-gnu/libdbus-1.so.3 -> libdbus-1.so.3.14.6 – Munty May 14 '17 at 13:06
  • I added an output sample of the original error to my post – Munty May 14 '17 at 13:19

2 Answers2

1

I managed to fix the problem by:

  • runnig dpkg --remove --force-depends libdbus-1-3. to remove libdbus-1-3 without removeing its dependencies.
  • running make clean to remove every dbus version' remainings I had installed when trying to fix the problem.
  • commenting a deb-src entry I had in /etc/apt/sources.list file.
  • cleaning the local repository using apt-get clean and apt-get autoclean. - running apt-get install -f to try to fix broken dependencies.
  • and since installing dbus using apt-get install dbus failed because of dbus-uuidgen error, I used apt-get source to get the source package and then installed it manually and it got installed without any error. now dbus-uuidgen worked, and printed a string.

I am not exactly sure what fixed the issue, but I think I had a different version of dbus installed using a libdbus-1-3 library that only works with dbus version 1.10.6-ubun amd64 (for ubuntu), and it appears that only this version is working for my distribution, in my case. I believe @Gilles explanation to be more accurate.

Munty
  • 21
0

You have two different versions of the dbus-uuidgen executable and the library libdbus-1.so.3 that it uses, and these versions are not binary compatible despite having the same file name. (This may be due to different compilation options but it's only a wild guess without knowing precisely how your build was configured.) You need to ensure that /usr/bin/dbus-* only uses libdbus-* libraries from /lib or /usr/lib, and that /usr/bin/dbus-* only uses libdbus-* libraries from /usr/local/lib.

I recommend that you don't install programs in /usr/local that conflict with core system programs and libraries such as D-Bus. If you need another version for testing, install it in a separate directory that is not on the executable or library search path.

  • I didn't get the part of "You need to ensure that /usr/bin/dbus-* only uses..., and that /usr/bin/dbus-*...", can you clarify some more. – Munty May 21 '17 at 10:56
  • @Munty You have two installations of dbus, one under /usr/local and one under /usr. You must make sure that the executable in /usr/local/bin uses the libdbus-* library in /usr/local/lib, and that the executable in /usr/bin only uses the libdbus-* library under /usr/lib or /lib. Better would be to remove the one from /usr/local unless you really need it, which does not appear to be the case. – Gilles 'SO- stop being evil' May 21 '17 at 19:13