On Sun, May 10, 2020 at 02:46:39PM +0000, Caveman Al Toraboran wrote: > any reason why it isn't a bug in libstfl? e.g. > shouldn't it create a symlink to libstfl.so.0 as > well?
See [1] and [2] for an overview of the versioning and naming schemes commonly used by shared objects libraries. `.0` is the major version of the library, and generally symlinks to the best minor version of that particular major release. The `.so` suffix, without any particular version number, is usually a symlink to the latest version installed, regardless of the major version. Consider the following hypothetical as an exemplar (can an exemplar also be a hypothetical ?). libfoo.so.0.2.5 libfoo.so.0 -> libfoo.so.0.2.5 libfoo.so -> libfoo.so.0.2.5 This reflects `libfoo` version 0.2.5, with zero as the major version and 2.5 as the minor. Now consider that a new major version of `libfoo` is released which breaks A.P.I.-compatibility with 0.2.5. The files now look like this, assuming v. 0.2.5 is still on the system: libfoo.so.0.2.5 libfoo.so.1.0.0 libfoo.so.0 -> libfoo.so.0.2.5 libfoo.so.1 -> libfoo.so.1.0.0 libfoo.so -> libfoo.so.1.0.0 This naming scheme allows application developers, such as those of `newsboat`, to assume that interface-breakages only occur on changes of the major versions, thus linking to `<library>.so.<major>` without having to care about the library's minor versioning. Unless you're the author of the library to which you're linking, or have some sort of assurance that your program won't be affected by potential library interface changes, it's probably a bad idea to link to the symlink with no specific major or minor version (libfoo.so). > any guideline that helps us figure out whether its > an app's fault or a lib's fault? In your particular case, `newsboat` is trying to link to `libstfl` major version zero, but unfortunately, the developers of `libstfl` have not included such a symlink, and instead expect developers to link to files providing a specific minor version. Technically, it is a problem of `newsboat`, however the authors of `libstfl` should follow proper versioning practice and provide a symlink for each major version. > My thirst for knowledge does not stop here. ;-) Read more about semantic versioning in the general sense at [3] and [4]. [4] is the Backus-Naur grammar, unneeded for a general understanding of the concepts unless you're implementing some sort of program to automatically parse or generate version numbers. [1] https://stackoverflow.com/a/2004038/ [2] https://stackoverflow.com/a/664401/ [3] https://github.com/dbrock/semver-howto [4] https://semver.org/ -- Ashley Dixon suugaku.co.uk 2A9A 4117 DA96 D18A 8A7B B0D2 A30E BF25 F290 A8AA
signature.asc
Description: PGP signature