1

I'm interested in building Linux desktop apps with Web front-end technologies. Both platforms I've tried -- Chromium Embedded Framework/CEFPython, and Awesomium, seem to have a dependency on libudev.so.0, and fail in a most unpleasant manner when they don't find it.

libudev.so.0, however, doesn't seem to be provided by any package in recent Ubuntu releases, and this AUR package only implements the common, yet controversial fix of symlinking it to libudev.so.1. On the other hand, the Chromium browser, on a recent version of which both CEF and Awesomium are based, runs happily without that dependency.

Does anyone know what's the story behind this library? And how do I properly ensure reliable operation across different Linux distros for software that relies on embedding Chromium?

1

Basically, udev was brought into the whole systemd revolution, and became part of a larger, more complex system. Various changes incremented the interface, and required a jump from .so.0 to .so.1.

Rather than supporting both the old interface and the new interface by providing both .so.0 and .so.1, the developers opted to say "fuck it, we'll make them all upgrade their dependencies!" and they dropped .so.0 from the binary package.

It's possible to build an older version of libudev that still provides .so.0 if it's necessary.

It's also possible that this change is recent enough that most package maintainers haven't caught the glitch to explicitly state "this package requires libudev before version xyz" and most developers haven't switched their binaries to require the latest version of libudev.

And a third possibility is that some key developers actually symlinked .so.0 to .so.1.

Basically the same mess of possibilities that happens when any key component makes a major interface change.

Source: Wikipedia on udev

And: Program Library HOWTO

  • 1
    What bothers me is this: "When a new version of a library is binary-incompatible with the old one the soname needs to change" If libudev.so.1 is binary incompatible with libudev.so.0, why does the symlinking hack work? And how reliable is it? – avramov Sep 22 '14 at 19:54
1

There is an issue in Chromium tracker to remove runtime dependency on libudev.so.0. It includes some useful information as well, see this link.

Google Chrome installer creates symlink when needed, see this link.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.