Help using 'dpkg' command to install debian packages

Dallas Clement dallas.a.clement at gmail.com
Thu Jul 12 13:49:26 UTC 2007


Hello All,

I need some help understanding how the busybox 'dpkg -i' command works.
Specifically, I would like to know how the mechanism for checking debian
package dependencies works. I'd like to know what essential files are
needed to do the checking.

I've built a few packages and tried to install them. Those with
dependencies are failing to install for some reason.

Here is my scenario:

I built a binary libc6-i386.deb package on my Debian host and installed
it on another host which has nothing but a bare Linux 2.6.21.1 kernel
and a static busybox 1.6.0 installed. I used the busybox 'dpkg' command
to install the package. Everything went fine and the output of the 'dpkg
-l' command is:

Name Version
+++-=============-==============
ii libc6-i386 2.3.6

After this, I built a busybox package to re-install the full busybox
implementation on to my target host. This package is dependent on
libc6-i386 as can be seen from the 'dpkg --info' command:

dallas at debian:~/packages$ dpkg --info busybox_1.6.0-1_i386.deb
new debian package, version 2.0.
size 233752 bytes: control archive= 619 bytes.
444 bytes, 12 lines control
258 bytes, 4 lines md5sums
Package: busybox
Version: 1.6.0-1
Section: unknown
Priority: extra
Architecture: i386
Depends: libc6-i386 (>= 2.3.5-1)
Installed-Size: 436
Maintainer: Dallas Clement <dallas.clement at specktel.com>
Description: Busybox UNIX command utilities.
BusyBox combines tiny versions of many common UNIX utilities into \
a single small executable. It provides replacements for most of the \
utilities you usually find in GNU fileutils, shellutils, etc.

When I try to install this package, it fails during the installation.
This is the error I get:

dpkg: package busybox depends on libc6-i386, which is not installed or
flagged to be installed


I cannot understand why I am getting this error, when clearly the
libc6-i386 package is installed as you can see from the previous 'dpkg
-l' output.

In fact, the contents of the /var/lib/dpkg/status file are as follows:

cat /var/lib/dpkg/status

Package: libc6-i386
Version: 2.3.6
Section: libs
Priority: required
Architecture: i386
Maintainer: Dallas Clement <dallas.clement at specktel.com>
Description: The GNU C library
The GNU C library is the standard C/C++ library \
needed to support most Linux applications.
Status: install ok installed

----

Clearly, the libc6-i386 package is installed.

Is there anything else that 'dpkg' checks other than this 'status' file
to do the dependency check? Is it just a simple package name check, or
is there more involved?

Any insight you could provide will be greatly appreciated!  I'm at my
wit's end trying to get this to work.




More information about the busybox mailing list