[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: