[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: