Hello,<br><br>I need an advice on how to push an update without impacting users too much.<br><br>There&#39;s a problem in the current shipped Bacula in Fedora 17 related to shared libraries.<br>This is related to the fact that upstream changed things so many times to remove the multiple builds in the past 6 months.<br>
I&#39;ll try to make the story as short as possible:<br><br>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.<br>
<br>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.<br>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.).<br>
<br>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):<br><br># alternatives --config libbaccats.so<br>
<br>There are 3 programs which provide &#39;libbaccats.so&#39;.<br><br>  Selection    Command<br>-----------------------------------------------<br>   1           /usr/lib64/<a href="http://libbaccats-mysql-5.2.6.so">libbaccats-mysql-5.2.6.so</a><br>
 + 2           /usr/lib64/<a href="http://libbaccats-sqlite3-5.2.6.so">libbaccats-sqlite3-5.2.6.so</a><br>*  3           /usr/lib64/<a href="http://libbaccats-postgresql-5.2.6.so">libbaccats-postgresql-5.2.6.so</a><br><br>
Enter to keep the current selection[+], or type selection number:<br><br>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:<br><br># alternatives --config libbaccats.so<br>
<br>There are 6 programs which provide &#39;libbaccats.so&#39;.<br><br>  Selection    Command<br>-----------------------------------------------<br>   1           /usr/lib64/<a href="http://libbaccats-mysql-5.2.6.so">libbaccats-mysql-5.2.6.so</a><br>
 + 2           /usr/lib64/<a href="http://libbaccats-sqlite3-5.2.6.so">libbaccats-sqlite3-5.2.6.so</a><br>*  3           /usr/lib64/<a href="http://libbaccats-postgresql-5.2.6.so">libbaccats-postgresql-5.2.6.so</a><br>   4           /usr/lib64/<a href="http://libbaccats-mysql-5.2.7.so">libbaccats-mysql-5.2.7.so</a><br>
   5           /usr/lib64/<a href="http://libbaccats-sqlite3-5.2.7.so">libbaccats-sqlite3-5.2.7.so</a><br>   6           /usr/lib64/<a href="http://libbaccats-postgresql-5.2.7.so">libbaccats-postgresql-5.2.7.so</a><br><br>
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.<br><br># alternatives --config libbaccats.so<br><br>There are 3 programs which provide &#39;libbaccats.so&#39;.<br>
<br>  Selection    Command<br>-----------------------------------------------<br>   1           /usr/lib64/libbaccats-mysql.so<br>   2           /usr/lib64/libbaccats-sqlite3.so<br>*+ 3           /usr/lib64/libbaccats-postgresql.so<br>
<br>What&#39;s the procedure to push this update into updates-testing (and updates)? There&#39;s some cleanup of alternatives involved.<br><br>Thanks,<br>--Simone<br><br><br><br><br>-- <br>You cannot discover new oceans unless you have the courage to lose sight of the shore (R. W. Emerson).<br>
<br>