Advice for release critical bug (WAS: Bug#22942: libpaper depends on libpaperg)
Recently, Santiago opened a bug against libpaper. This is one of the
RELEASE CRITICAL bugs, and we were not able to find a satisfactory
solution. Hopefully, you have some useful suggestion...
Here is the history:
On Thu, 28 May 1998, Santiago Vila wrote:
> Subject: Bug#22942: libpaper depends on libpaperg
> I think there is not (or there should not be) anything in libpaper to
> make it to depend on libpaperg.
> I'm tagging this bug as "important" because the upgrade will be smoother
> having this bug fixed (users should be able to upgrade libraries
> from oldlibs before installing any other libc6 library).
The problem is that libpaper does not provide just the library, but also a
pair of executables (paperconf and paperconfig). A package that depends on
libpaper can use both the library and the executables.
When i had to provide both the libc5 and the libc6 version of the
package, i decided to put the binaries only in the libc6 (i.e.,
libpaperg). The libc5 package (libpaper) should however depend on the
libc6 package, to assure that the packages depending on libpaper can use
It is not possible to put the executables in both packages: the packages
would conflict, and this is not good, since it can be required to have
both the libc5 and the libc6 versions of a library installed.
It is also not possible to put the executables in both packages AND to
put in libpaperg a "Replaces: libpaper" (or vice-versa), since in this
case it is possible to end with libpaper installed but without the
executables (1- install libpaper; 2- install libpaperg; 3- remove
The possible solutions are:
SOLUTION 1 (Suggested by Wichert)
Create the packages:
libpaper - the old libc5 library. May suggest libpaper-bin.
libpaperg - the new libc6 library. May suggest libpaper-bin.
libpaper-bin - the binaries&manpages. Depend on libpaperg
Here the problems are that we do not guarantee, by installing libpaper,
that the executables are present in the system. OTOH, by making
libpaper depend on libpaper-bin, the installation of libpaper would also
force the installation of libpaperg, which is what we wanted to avoid.
Moreover, one on the executables (paperconfig) is used in the postinst of
libpaper to configure the library; if the executables do not appear
in the libpaper package, it is not possible to call paperconfig in the
postinst, so a different way to initialize the library should be used (for
instance, a subset of paperconfig should be included in the postinst).
Create the packages:
- libpaper : man pages + binaries + libc5-libraries
in /usr/lib/libc5-compat; does NOT depend on libpaperg
- libpaperg : man pages + binaries + libc6-libraries;
conflicts with libpaper
- libpaper-oldlib : only the libc5-libraries in /usr/lib/libc5-compat;
depends on libpaperg, conflicts with libpaper,
When using only the libc5 libraries, it is sufficient to install the new
version of libpaper; when you want to install also libpaperg, you have to
replace libpaper with libpaper-oldlib.
In this way, however, there would be two versions of the libc5 packages
and the situation is not exactly clean.
Well, we can also decide that to leave the situation as it is. In this
way, however, users would not be able to install the new version of the
library without also installing libpaperg (and libc6...)
Any comment and help is welcome!
 There is also another reason to make libpaper depend on libpaperg:
these two packages "share" a config file. However, this file is not part
of the package, but is created in the postinst and removed in the postrm,
in case of purge. The config file should be removed only when both
libpaper and libpaperg are purged, and this can be easily guaranteed
in the postrm scripts. So, in my opinion, it should not be too difficult
to solve _this_ problem.
To UNSUBSCRIBE, email to firstname.lastname@example.org
with a subject of "unsubscribe". Trouble? Contact email@example.com