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

Attachment: signature.asc
Description: PGP signature

Reply via email to