rpmlint question

Michael Schwendt bugs.michael at gmx.net
Thu Feb 15 19:15:59 UTC 2007


On Thu, 15 Feb 2007 12:14:22 -0500 (EST), Tom Diehl wrote:

> > The developers ought to move their plugins to a private directory and not
> > pollute /usr/lib. The chosen file names are very generic, too, since the
> > libraries can conflict with any other package, which would also include a
> > libmysql_drv.so.* Further, the developers ought to dlopen the versioned
> > libs rather than the non-versioned *.so and that is especially useful when
> > loading external libs (e.g. system libs).
> 
> AAH!! This helps a lot. I think I am finally starting to understand this magic.
> 
> So, if I understand you correctly, the right thing to do in this case, would
> be to get upstream to use /usr/lib/libmysql_drv.so.7 and put the *.so files in
> the -devel package.
> 
> Is this correct?

More like:

* if these libraries are supposed to be plugins, the developers should
move them to /usr/lib/dspam/ and dlopen them from there via *.so.* or *.so
(they have all the freedom, the private plugin directory can contain all
files - if the plugins are built together with the main application,
dlopening *.so from a private directory would be fine)

* if they want to keep them in /usr/lib as plugin libs to coexist with
system libraries, the developers are strongly encouraged to give them
names in an own namespace, which is less likely to conflict with other
packages or libs, e.g. /usr/lib/libdspam_mysql_drv.so* or
/usr/lib/libdspam_mysql.so*

* if these libs can be linked with (or dlopenend from) other programs
through a public API (with corresponding include files) just like system
libraries, the developers ought to separate what is needed at run-time for
dynamic linking (versioned *.so.* libs) and what is needed at build-time
only (the *.so symlinks) - that would make it possible to split off the
development files (headers and *.so symlink e.g.) into the separate -devel
package and possible even the libs into a separate -libs package -
external programs, which would link against these libs, would have
automatic RPM dependencies on the exact library names, e.g. an implicit
"Requires: libdspam_mysql_drv.so.7" - the developers, if they continue
loading the libs as plugins, should prefer the versioned *.so.* names,
too, because changing the library name and version would break
dependencies and because the *.so symlink of system libraries is only to
be used during development




More information about the fedora-extras-list mailing list