Bug#22690: some observations
Peter Kundrat writes ("Bug#22690: some observations"):
> The very same bug happened to me recently. After some investigation it seems that
> the problem is caused by the following:
>
> apache-ssl depends on apache | apache-common but also provides apache (thats
> for 1.2.6+1.16-1). In case it remains in unpacked state problems begin.
Thanks for that useful information.
The apache-ssl control file is silly, but I agree that dpkg shouldn't
behave like this either.
To the apache-ssl maintainer: can you fix the control file, please ?
In the meantime I'll consider this patch, but dpkg's build system is
in a parlous state right now, and it'll take me a while to fix it.
Thanks,
Ian.
> debug log (a fragment of):
> D000400: checking group ...
> D000400: checking possibility -> apache
> D000400: not installed - returning 0
> D000400: checking provider apache-ssl
> D000400: unpacked/halfconfigured, defer
> D000400: found 1
> D000400: checking possibility -> apache-common
> D000400: not installed - returning 0
> D000400: found 1
> D000400: found 1 matched 0
>
> process_queue() calls deferred_configure() which calls dependencies_ok().
> Unfortunately dependencies_ok finds that apache-ssl depends on apache (which
> is provided by the package inspected itself and hence not configured yet), so it
> defers and it loops until dependtry gets over 4.
>
> I am sorry not to have time to study it more in depth so i can't tell whether
> apache-ssl description is wrong, but probably it wouldnt be bad to detect that loop.
>
> Proposed patch:
> --- dpkg/packages.c.orig Sat Feb 6 22:28:43 1999
> +++ dpkg/packages.c Sat Feb 6 22:28:48 1999
> @@ -297,8 +297,13 @@
> }
> if (possdependee->clientdata &&
> possdependee->clientdata->istobe == itb_installnew) {
> - debug(dbg_depcondetail," unpacked/halfconfigured, defer");
> - return 1;
> + if (possdependee == requiredby) {
> + debug(dbg_depcondetail," provided by itself, ok");
> + return 3;
> + } else {
> + debug(dbg_depcondetail," unpacked/halfconfigured, defer");
> + return 1;
> + }
> } else if (!removing && fc_configureany && !skip_due_to_hold(possdependee)) {
> fprintf(stderr,
> _("dpkg: also configuring `%s' (required by `%s')\n"),
>
>
> Regards,
>
> Peter
> --
> Peter Kundrat
> kundrat@general-it.sk
Reply to: