X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/b917917067e757c4479a344a263ef7cf43c00866..6f43fac607c94f423f1d01708ecf947a8a303d38:/cmdline/apt-mark.cc diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc index eb3410be1..d3a3a780b 100644 --- a/cmdline/apt-mark.cc +++ b/cmdline/apt-mark.cc @@ -209,7 +209,7 @@ bool DoHold(CommandLine &CmdL) dup2(nullfd, STDIN_FILENO); dup2(nullfd, STDOUT_FILENO); dup2(nullfd, STDERR_FILENO); - if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0) + if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0 && chdir("/") != 0) _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --assert-multi-arch", chrootDir.c_str()); execvp(Args[0], (char**) &Args[0]); _error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!"); @@ -279,7 +279,7 @@ bool DoHold(CommandLine &CmdL) { close(external[1]); std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory"); - if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0) + if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0 && chdir("/") != 0) _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --set-selections", chrootDir.c_str()); int const nullfd = open("/dev/null", O_RDONLY); dup2(external[0], STDIN_FILENO); @@ -386,6 +386,11 @@ bool ShowHelp(CommandLine &CmdL) "Commands:\n" " auto - Mark the given packages as automatically installed\n" " manual - Mark the given packages as manually installed\n" + " hold - Mark a package as held back\n" + " unhold - Unset a package set as held back\n" + " showauto - Print the list of automatically installed packages\n" + " showmanual - Print the list of manually installed packages\n" + " showhold - Print the list of package on hold\n" "\n" "Options:\n" " -h This help text.\n"