new features in dpkg 1.7.1
Now that dpkg 1.7.0 has hit unstable and I fixed the first bad bugs
in 1.7.1 (in Incoming right now) it it is probably time to introduce
the important new features to those of you who haven't been following
debian-dpkg this year. I will update the packaging-manual later this
Remember: if you rely on any of these features you will need to
add a (Build-)Depend to your package.
origin and BTS info
dpkg now supports two new fields in debian/control: Origin and
Bugs. These two fields can be used to state which vendor created a
package, and where bugreports should be sent to. The bugs info in
debian/control is a fallback in case /etc/dpkg/origins/xxx does
not exist. This means that bugs information can be overriden in
a central location.
This should mostly be of interest to people like Stormix, HelixCode,
Corel, etc.: they need to add a /etc/dpkg/origins/ file to a central
package and put the right tags in their debian/control files.
The bugreporting packages also need to be updated to read this new
information and use it.
For a while now you were able to specify ownership and file modes for
certain files using suidregister. This approach had several problems
with this approach: it can only be used of the package supports it,
and only for a few files, and there is a window between the time a file
is unpacked and the postinst is run during which the file mode and
ownership have the default value. dpkg 1.7 fixes this by adding a new
feature called statoverrides which implements this functionality in dpkg
itself, and adds a new tool called dpkg-statoverride to manage the list
We need to have an upgrade path from suidmanager to statoverrides. At
this moment we don't have that yet; I'm considering adding some magic to
dpkg 1.7.2 to make it convert the settings from suidmanager into
statoverides and ake dpkg conflict with suidmanager. Packages will need
to be updates to use dpkg-statoverride instead in their maintainer
dpkg-shlibdeps has been partially reimplemented and should work a lot
better new, albeit more slowly. The new code uses objdump instead of ldd
to generate dependencies which gives you a much more accurate
representation of what is really needed, and also fixes probems with
needing to set LD_LIBRARY_PATH or fakeroot interfering. This does mean
that maintainers will need to use dpkg-shlibdeps for both libraries and
The method to look for packages providing the libraries has also been
updated: dpkg-shlibdeps will now look at debian/**/DEBIAN/shlibs to see
if another package provides a library that is being used. This should
mean that in most cases shlibs.local is no longer needed.
The search order was also fixed, and /etc/dpkg/shlibs.default and
/etc/dpkg/shlibdes.override work as documented now.
Probably the least tested new feature. You can configure default options
for dpkg in /etc/dpkg/dpkg.cfg now. Any commandline option can be put
in there (without the leading - signs).
dpkg-deb does file reordering
During unpacking of a package we need to extract the target of symlinks
before the symlink itself to prevent some nasty problems. The way this
was done is by making sure the target is created before the symlink
so the ordering inside the package is correct. However this relied on
specific behaviour of the filesystem the package is being built on
which does not necessarily hold for all UNIX filesystems, and most
noticably not for filesystems like reiserfs that use hashes to index
This trick is no longer needed now: dpkg-deb reorders the files when
it creates a package so the maintainer no longer needs to take care
of this himself.
The new version has some fixes that make it easier to compile dpkg
on non-Linux systems. Most noticably it should build without problems
on HURD now.
With the growing number of autobuilders one might choose to only
upload sources. dpkg-buildpackage and dpkg-genchanges support this
now with a new -S flag.
A bunch of suble and not so subtle bugs have been fixed, and probably
a number of new and interesting bugs have been introduced. You have
/ Generally uninteresting signature - ignore at your convenience \
| email@example.com http://www.liacs.nl/~wichert/ |
| 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0 2805 3CB8 9250 2FA3 BC2D |