gdebi satisfydepends fails for arch i386

Asked by Chris de Villiers


When I try to build a package using the gdebi build-dependency resolver with a i386 architecture on a 64-bit host, the build consistantly fails. To reproduce, on 64-bit Precise execute:

$ sudo pbuilder create --basetgz /var/cache/pbuilder/precise-i386.tgz --distribution precise --architecture i386
$ sudo pbuilder build --basetgz /var/cache/pbuilder/precise-i386.tgz hello-debhelper_2.7-2ubuntu1.dsc
W: /home/vagrant/.pbuilderrc does not exist
I: using fakeroot in build.
I: Current time: Wed Jan 16 12:28:29 UTC 2013
I: pbuilder-time-stamp: 1358339309
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/precise-i386.tgz]
I: creating local configuration
I: copying local configuration
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: Mounting /var/cache/pbuilder/ccache
I: policy-rc.d already exists
I: Obtaining the cached apt archive contents
I: Setting up ccache
I: Installing the build-deps
Traceback (most recent call last):
  File "/usr/bin/gdebi", line 80, in <module>
    debi = GDebiCli(options)
  File "/usr/share/gdebi/GDebi/", line 53, in __init__
    "--print-architecture"], stdout=PIPE).communicate()[0]
  File "/usr/lib/python2.7/", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
E: pbuilder-satisfydepends failed.
I: Copying back the cached apt archive contents
I: unmounting /var/cache/pbuilder/ccache filesystem
I: unmounting dev/pts filesystem
I: unmounting proc filesystem
I: cleaning the build env
I: removing directory /var/cache/pbuilder/build//23329 and its subdirectories

After investigating I found the call in, line 53, tries to call "/usr/bin/dpkg --print-architecture" from the host in the root directory of the extracted chroot. When I call that by hand:

$ sudo -i
# pbuilder login --basetgz /var/cache/pbuilder/precise-i386.tgz & # Run in background
# /var/cache/pbuilder/build/$!/usr/bin/dpkg --print-architecture
-bash: /var/cache/pbuilder/build/25038/usr/bin/dpkg: No such file or directory

I get the same "No such file or directory" that the python subprocess returns. The dpkg binary exists; I can stat it and file reports it is a "ELF 32-bit LSB executable". I can also call it just fine from within the chroot:

# fg
# /usr/bin/dpkg --print-architecture

It seems to fail when called from the host. The call from pbuilder responsible for this is on line 38 of the /usr/lib/pbuilder/pbuilder-satisfydepends-gdebi script:

    INSTALL=$(/usr/bin/gdebi --quiet --root $CHROOT --apt-line $NO_RECOMMENDS $DEBIAN_CONTROL)

So, gdebi at some point calls dpkg in the root of the chroot to obtain the architecture and that is when things go wrong. Unfortunately I don't know why. hence the post ;) Am I doing something wrong or is this a bug? I also tested a 64-bit chroot and it works just fine.

Here is my pbuilderrc:
$ cat /etc/pbuilderrc
COMPONENTS="main restricted universe multiverse"

I am using Ubuntu 12.04 64-bit and pbuilder 0.208ubuntu1 from the stock repo.


Question information

English Edit question
Ubuntu pbuilder Edit question
No assignee Edit question
Last query:
Last reply:
Revision history for this message
actionparsnip (andrew-woodhead666) said :

use apt-get, it is ok with multiarch

Revision history for this message
Chris de Villiers (chrisdevilliers) said :

Are you referring to the "aptitude" implementation? I was trying out gdebi to speed up the build dependancy calculation as per the . So does this mean gdebi is known not to work for multiarch? Thanks!

Revision history for this message
actionparsnip (andrew-woodhead666) said :

I know aptitude does not and apt-get does but I have no idea about gdebi. You can pull in deps for a package using:

sudo apt-get -f install

Can you help with this problem?

Provide an answer of your own, or ask Chris de Villiers for more information if necessary.

To post a message you must log in.