Our pre/postinsts expect $D to be set when running in a sysroot and don't expect a chroot. This matches up our system expectations with what dpkg does. Upstream-Status: Inappropriate [OE Specific] RP 2011/12/07 Index: dpkg-1.16.8/src/script.c =================================================================== --- dpkg-1.16.8.orig/src/script.c +++ dpkg-1.16.8/src/script.c @@ -102,38 +102,10 @@ setexecute(const char *path, struct stat static const char * preexecscript(struct command *cmd) { - const char *admindir = dpkg_db_get_dir(); - size_t instdirl = strlen(instdir); - if (*instdir) { - if (strncmp(admindir, instdir, instdirl) != 0) - ohshit(_("admindir must be inside instdir for dpkg to work properly")); - if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0) - ohshite(_("unable to setenv for subprocesses")); - - if (chroot(instdir)) - ohshite(_("failed to chroot to `%.250s'"), instdir); - if (chdir("/")) - ohshite(_("failed to chdir to `%.255s'"), "/"); + setenv("D", instdir, 1); } - if (debug_has_flag(dbg_scripts)) { - struct varbuf args = VARBUF_INIT; - const char **argv = cmd->argv; - - while (*++argv) { - varbuf_add_char(&args, ' '); - varbuf_add_str(&args, *argv); - } - varbuf_end_str(&args); - debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, - args.buf); - varbuf_destroy(&args); - } - if (!instdirl) - return cmd->filename; - - assert(strlen(cmd->filename) >= instdirl); - return cmd->filename + instdirl; + return cmd->filename; } static int