Update impacting users (not so many I hope)

Simone Caronni negativo17 at gmail.com
Wed Jun 6 17:58:21 UTC 2012


Hello,

I need an advice on how to push an update without impacting users too much.

There's a problem in the current shipped Bacula in Fedora 17 related to
shared libraries.
This is related to the fact that upstream changed things so many times to
remove the multiple builds in the past 6 months.
I'll try to make the story as short as possible:

Starting from 5.0.3, there were multiple binaries built from the same
source inside the package, lots of symlinks in the alternatives system and
lot of patches to support the various database backends.

Starting from 5.2.x, upstream developers moved all the common code into
libraries and made the selection of the database through a single symlink
on a versioned library.
At the beginning this was done with multiple versioned libraries offering a
single shared object name and tricks like that. This made packaging almost
impossible (packages requiring libraries contained in themselves, yum going
crazy) and ended up with the developers changing everything a couple of
times (and the spec file followed, with %ghost, etc.).

In the latest incarnation of the package that was released with Fedora 17
(5.2.6-2.fc17 - unchaged for a long time), the backend was chosen with an
alternative (+ a slave):

# alternatives --config libbaccats.so

There are 3 programs which provide 'libbaccats.so'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib64/libbaccats-mysql-5.2.6.so
 + 2           /usr/lib64/libbaccats-sqlite3-5.2.6.so
*  3           /usr/lib64/libbaccats-postgresql-5.2.6.so

Enter to keep the current selection[+], or type selection number:

The problem is that when I tried to install 5.2.7-2.fc17 from a freshly
built package I ended up in this situation:

# alternatives --config libbaccats.so

There are 6 programs which provide 'libbaccats.so'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib64/libbaccats-mysql-5.2.6.so
 + 2           /usr/lib64/libbaccats-sqlite3-5.2.6.so
*  3           /usr/lib64/libbaccats-postgresql-5.2.6.so
   4           /usr/lib64/libbaccats-mysql-5.2.7.so
   5           /usr/lib64/libbaccats-sqlite3-5.2.7.so
   6           /usr/lib64/libbaccats-postgresql-5.2.7.so

I fixed the thing in 5.2.7-3.fc17 (in koji), simply linking the unversioned
shared object to the alternatives file and removing the slave.

# alternatives --config libbaccats.so

There are 3 programs which provide 'libbaccats.so'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib64/libbaccats-mysql.so
   2           /usr/lib64/libbaccats-sqlite3.so
*+ 3           /usr/lib64/libbaccats-postgresql.so

What's the procedure to push this update into updates-testing (and
updates)? There's some cleanup of alternatives involved.

Thanks,
--Simone




-- 
You cannot discover new oceans unless you have the courage to lose sight of
the shore (R. W. Emerson).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/devel/attachments/20120606/043026f6/attachment.html>


More information about the devel mailing list