Bug#659387: [PATCH] "apt-get -o RootDir=/foo install ..." fails if /foo/foo doesn't exists
Package: apt
Version: 0.8.15.9
Severity: normal
Tags: patch
Steps to reproduce:
1. Create Debian chroot environment in directory "/foo" or mount some Debian to "/foo"
2. "/foo/foo" must be non-existing
3. Run "apt-get -o RootDir install <some package>"
apt-get will answer:
E: Sub-process /usr/bin/dpkg returned an error code (100)
Reason:
apt-pkg/deb/dpkgpm.cc:1139-1149 in apt source tree.
At first apt chroots to /foo, then chdirs to "FindDir("DPkg:Run-Directory", "/")".
But FindDir returns /foo/ instead of /. So, we chdir to real dir "/foo/foo" which doesn't exists!
Patch:
diff -ur apt-0.8.15.9/apt-pkg/deb/dpkgpm.cc apt-pached/apt-pkg/deb/dpkgpm.cc
--- apt-0.8.15.9/apt-pkg/deb/dpkgpm.cc 2011-10-14 12:09:49.000000000 +0400
+++ apt-pached/apt-pkg/deb/dpkgpm.cc 2012-02-10 20:52:23.175493756 +0400
@@ -1145,7 +1145,7 @@
_exit(100);
}
- if (chdir(_config->FindDir("DPkg::Run-Directory","/").c_str()) != 0)
+ if (chdir("/") != 0)
_exit(100);
if (_config->FindB("DPkg::FlushSTDIN",true) == true && isatty(STDIN_FILENO))
Of course, this is bad patch. It ignores content of Run-Directory option. So, doesn't apply it.
Write your own better patch. I writed this patch just to force you :)
-- Package-specific info:
-- apt-config dump --
APT "";
APT::Architecture "amd64";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Install-Recommends "false";
APT::Install-Suggests "0";
APT::Authentication "";
APT::Authentication::TrustCDROM "true";
APT::NeverAutoRemove "";
APT::NeverAutoRemove:: "^firmware-linux.*";
APT::NeverAutoRemove:: "^linux-firmware$";
APT::NeverAutoRemove:: "^linux-image.*";
APT::NeverAutoRemove:: "^kfreebsd-image.*";
APT::NeverAutoRemove:: "^linux-restricted-modules.*";
APT::NeverAutoRemove:: "^linux-ubuntu-modules-.*";
APT::NeverAutoRemove:: "^gnumach$";
APT::NeverAutoRemove:: "^gnumach-image.*";
APT::Never-MarkAuto-Sections "";
APT::Never-MarkAuto-Sections:: "metapackages";
APT::Never-MarkAuto-Sections:: "restricted/metapackages";
APT::Never-MarkAuto-Sections:: "universe/metapackages";
APT::Never-MarkAuto-Sections:: "multiverse/metapackages";
APT::Never-MarkAuto-Sections:: "oldlibs";
APT::Never-MarkAuto-Sections:: "restricted/oldlibs";
APT::Never-MarkAuto-Sections:: "universe/oldlibs";
APT::Never-MarkAuto-Sections:: "multiverse/oldlibs";
APT::AutoRemove "";
APT::AutoRemove::RecommendsImportant "false";
APT::Architectures "";
APT::Architectures:: "amd64";
Dir "/";
Dir::State "var/lib/apt/";
Dir::State::lists "lists/";
Dir::State::cdroms "cdroms.list";
Dir::State::mirrors "mirrors/";
Dir::State::extended_states "extended_states";
Dir::State::status "/var/lib/dpkg/status";
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";
Dir::Etc "etc/apt/";
Dir::Etc::sourcelist "sources.list";
Dir::Etc::sourceparts "sources.list.d";
Dir::Etc::vendorlist "vendors.list";
Dir::Etc::vendorparts "vendors.list.d";
Dir::Etc::main "apt.conf";
Dir::Etc::netrc "auth.conf";
Dir::Etc::parts "apt.conf.d";
Dir::Etc::preferences "preferences";
Dir::Etc::preferencesparts "preferences.d";
Dir::Etc::trusted "trusted.gpg";
Dir::Etc::trustedparts "trusted.gpg.d";
Dir::Bin "";
Dir::Bin::methods "/usr/lib/apt/methods";
Dir::Bin::dpkg "/usr/bin/dpkg";
Dir::Media "";
Dir::Media::MountPath "/media/cdrom";
Dir::Log "var/log/apt";
Dir::Log::Terminal "term.log";
Dir::Log::History "history.log";
Dir::Ignore-Files-Silently "";
Dir::Ignore-Files-Silently:: "~$";
Dir::Ignore-Files-Silently:: "\.disabled$";
Dir::Ignore-Files-Silently:: "\.bak$";
Dir::Ignore-Files-Silently:: "\.dpkg-[a-z]+$";
Dir::Ignore-Files-Silently:: "\.save$";
Dir::Ignore-Files-Silently:: "\.orig$";
Acquire "";
Acquire::cdrom "";
Acquire::cdrom::mount "/media/cdrom";
Acquire::gpgv "";
Acquire::gpgv::Options "";
Acquire::gpgv::Options:: "--ignore-time-conflict";
Acquire::Languages "";
Acquire::Languages:: "en";
Acquire::Languages:: "none";
DPkg "";
DPkg::Pre-Install-Pkgs "";
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";
Aptitude "";
Aptitude::Purge-Unused "true";
CommandLine "";
CommandLine::AsString "apt-config dump";
-- (no /etc/apt/preferences present) --
-- /etc/apt/sources.list --
deb http://mirror.yandex.ru/debian sid main
deb-src http://mirror.yandex.ru/debian sid main
deb http://mirror.yandex.ru/debian sid-updates main
deb-src http://mirror.yandex.ru/debian sid-updates main
deb http://mirror.yandex.ru/debian-backports sid-backports main
deb-src http://mirror.yandex.ru/debian-backports sid-backports main
-- System Information:
Debian Release: 6.0.3
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.0.0-12-generic (SMP w/8 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages apt depends on:
ii debian-archive-keyring 2010.08.28 GnuPG archive keys of the Debian a
ii gnupg 1.4.10-4 GNU privacy guard - a free PGP rep
ii libc6 2.13-26 Embedded GNU C Library: Shared lib
ii libgcc1 1:4.6.2-12 GCC support library
ii libstdc++6 4.6.2-12 GNU Standard C++ Library v3
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
apt recommends no packages.
Versions of packages apt suggests:
pn apt-doc <none> (no description available)
ii aptitude 0.6.3-3.2+squeeze1 terminal-based package manager (te
ii bzip2 1.0.5-6 high-quality block-sorting file co
ii dpkg-dev 1.16.1.2 Debian package development tools
ii lzma 4.43-14 Compression method of 7z format in
ii python-apt 0.8.0 Python interface to libapt-pkg
-- no debconf information
Reply to: