Comment 2 for bug 972751

Revision history for this message
Iain Lane (laney) wrote :

Thanks. We've had this bug a ton of times, but your terminal log is minimal enough that I think I can see what's going on.

There's a trigger in monodoc-base to update the search index for the installed documentation. As you upgraded monodoc-gtk2.0-manual, this trigger was activated. That causes the postinst of monodoc-base to be called, which does:

  case "$1" in
    […]

    triggered)

        /usr/bin/update-monodoc

        ;;

and update-monodoc (shipped in monodoc-base) calls

  monodoc --make-index > /dev/null

which crashes because gtk-sharp has been removed from the GAC (you can see this earlier in the log)

  Preparing to replace libgtk2.0-cil 2.12.10-2ubuntu3 (using .../libgtk2.0-cil_2.12.10-2ubuntu4_amd64.deb) ...
  Removing libgtk2.0-cil from Mono

but the new version's postinst has not been run yet, because monodoc-base does not depend on libgtk2.0-cil.

The monodoc binary is in the monodoc-browser package, and ends up calling /usr/lib/mono/monodoc/browser.exe, which is also in monodoc-browser. monodoc-browser does correctly depend on libgtk2.0-cil.

I think we should just move the trigger across from monodoc-base to monodoc-browser, as we can't do anything if monodoc-browser is not installed anyway. AFAICS dpkg guarantees that the Depends are satisfied when processing triggers (quoting /usr/share/doc/dpkg-dev/triggers.txt.gz)

  Packages in t-awaited and t-pending demand satisfaction of their dependencies just like packages in installed.

The postinst in monodoc-base tries to take care of -browser not being available

  if [ ! -x /usr/lib/monodoc/browser.exe -o -z "$(dpkg-query -W -f='${Status}' monodoc-browser 2>/dev/null | grep "ok installed")" ]; then
        exit 0
  fi

but this clearly does not work, and the rationale for trying to keep it here is lost in the mists of time.