summaryrefslogtreecommitdiff
path: root/apt-pkg/deb/debsystem.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/deb/debsystem.cc')
-rw-r--r--apt-pkg/deb/debsystem.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
index 8533b1157..749969759 100644
--- a/apt-pkg/deb/debsystem.cc
+++ b/apt-pkg/deb/debsystem.cc
@@ -392,7 +392,16 @@ std::string debSystem::StripDpkgChrootDirectory(std::string const &File)/*{{{*/
/*}}}*/
std::string debSystem::GetDpkgExecutable() /*{{{*/
{
- return StripDpkgChrootDirectory(_config->Find("Dir::Bin::dpkg","dpkg"));
+ std::string dpkg_executable = _config->Find("Dir::Bin::dpkg","dpkg");
+ if (APT::String::Startswith(dpkg_executable, "/")) {
+ struct stat buf;
+ if (stat(dpkg_executable.c_str(), &buf) != 0) {
+ _error->Warning(_("The dpkg executable set in Dir::Bin::dpkg is "
+ "missing, falling back to using default dpkg."));
+ dpkg_executable = "dpkg";
+ }
+ }
+ return StripDpkgChrootDirectory(dpkg_executable);
}
/*}}}*/
std::vector<std::string> debSystem::GetDpkgBaseCommand() /*{{{*/