Hi! There's been no general information about dpkg since Scott handed over dpkg maintenance to the new team. There's been several announcements about specific features during this period though, the contents of which will be skipped here. Call for testers ~~~~~~~~~~~~~~~~ The current version in experimental (1.15.6.1) contains lots of changes since the previous micro version (1.15.5), among those there's few that might have wide reaching unsuspected effects: * Changes to dpkg Pre-Depends. We are now linking dynamically [L] against libbz2, zlib and libselinux, which promotes libbz2 to pseudo-essential. We've also switched from lzma to xz-utils package, also changing the current pseudo-essential set. * dpkg and several of the companion tools now fsync() all [S] files prior to their atomic replace, and fsync() database directories on content changes. The directories are still not fsync()ed for package installation or removal, we might be implementing this in the future. Latest changes in 1.15.6.1 should fix the massive I/O degradation and give times similar to a dpkg w/o the fsync() patches. * Refactoring and fixes to the SELinux handling code. So it would be nice if people could give it a try and report any regressions, specially installation tests on ext4 filesystems using packages containing lots of small files, which have been reported to suffer from maddening slow downs with 1.15.6, which 1.15.6.1 should have addressed. We are planning to upload the next release to unstable by the end of the weekend, if we don't hear about any major regression. [L] See <http://lists.debian.org/debian-devel/2010/02/msg00511.html> for the rationale. [S] dpkg has always done fsync() on several of the database files, but not on files from packages or on directories. Team Status and News ~~~~~~~~~~~~~~~~~~~~ Contributions ───────────── Frank Lichtenheld recently stepped down from the team, many thanks for his past contributions! We are always looking for new contributors, be it for one time changes, or a longer involvement. Trying to tackle specific bug reports or items from our roadmap might be a good starting point, depending on its complexity. To be taken into account though, is that lots, if not most development in dpkg involve design work, the need to consider backward compatibility and the implications of the changes on the wider project and the needed interactions with different parts of the project (be it people or other programs). So it requires patience, as changes might not get deployed as fast as one might want or as fast as other changes might happen in other areas of the distribution, also because thinking them through and getting things right takes time. More information about the team can be found on the wiki [W]. We are planning to split dselect from the dpkg source tree in the nearish future, once libdpkg API has stabilized a bit. It's currently in maintenance mode and needs someone who cares and actually use the thing. If you are interested in getting involved please get in contact [C] with us! [W] <http://wiki.debian.org/Teams/Dpkg> [C] <mailto:debian-dpkg@lists.debian.org> Plans and roadmap ───────────────── As part of our future plans we have a roadmap [R], although some of those might get postponed for the 1.16.x series, depending on the Debian release date. The main theme of that roadmap is to try to merge back features and functionality that has been duplicated or developed anew outside dpkg, but which make more sense to have it supported natively by the dpkg suite, or by providing a public interface for it. We ship two files that list features that are scheduled for removal [F], and the current status of the provided APIs [A] by the tools. [R] <http://wiki.debian.org/Teams/Dpkg/RoadMap> [F] <file:///usr/share/doc/dpkg/README.feature-removal-schedule> [A] <file:///usr/share/doc/dpkg-dev/README.api> Tracking development ──────────────────── We'll keep posting general announcements from time to time, but if you'd like to keep track of changes happening in dpkg, the Debian changelog only includes significant or user visible changes, so it should be easy for people to follow what's going on in dpkg development by mostly reading just that, for a detailed list of changes on each release please check the upstream ChangeLog file (a dump of git log). Or an even more detailed option could be to subscribe to the debian-dpkg-cvs mailing list which receives all commits from git. Code reviews are always welcome! Downstreams ─────────── There's few more downstreams shipping [D] dpkg now. We'd be glad to make it easier for them by trying to integrate patches they might be carrying, thus trying to reduce their delta as much as possible. Of particular interest are distributions using dpkg as their native package manager. If we don't get approached (several of which have already done so) we'll be getting in contact with them at some point in the future. [D] <http://wiki.debian.org/Teams/Dpkg/Downstream> Global changes ~~~~~~~~~~~~~~ Initially most of our attention focused on fixing bug reports and cleanup, mainly on the documentation and perl parts. Raphaël is now focused mostly on the perl parts which are contained in libdpkg-perl and dpkg-dev, while I've now switched mostly to cleanup, refactor and fix the C parts contained in libdpkg-dev and dpkg. Documentation ───────────── Major cleanup and unification of style and form on man pages. Split dpkg-source(1) into independent man pages, namely: dpkg-buildpackage(1), dpkg-distaddfile(1), dpkg-genchanges(1), dpkg-gencontrol(1), dpkg-parsechangelog(1), dpkg-shlibdeps(1), deb-shlibs(5) and deb-substvars(5). New man pages: deb-version(5), deb-symbols(5), deb-triggers(5), deb-override(5), deb-extra-override(5), deb-split(5). All programs and scripts now support --help and --version. Remove useless and sometimes non-functional --license and --licence. Lots of code refactoring and cleanup ──────────────────────────────────── Modularization, cleanup and modernization of the perl code (to the point of being able to use strict and warnings). The result of this is the new libdpkg-perl package, which provides modules used by dpkg-dev, several of which are already to be considered public and can be used to replace ad-hoc code in other external tools. The ongoing cleanup of the C code base, with the objective to provide a sane shared library interface so that external applications can make use of it too. Right now there's already available a libdpkg-dev package providing a static library and the header files, although the API is still to be considered volatile, use at your own risk! As part of the refactoring work, we have also started adding unit test suites for the libdpkg-perl and libdpkg code. We also have the beginnings of a functional test suite for dpkg itself [T]. Addition of more tests are always welcome. [T] <http://git.debian.org/?p=dpkg/pkg-tests.git> Other changes ───────────── Transition from dpkg's original install-info to now more widely used GNU install-info. Transition from dpkg's 822-date to “date -R”. Removed obsolete cleanup-info. Summary of changes ~~~~~~~~~~~~~~~~~~ Here's a summary of most of the user visible changes (mostly interface additions) since 1.13.11.1 (2006-01-12) to 1.15.6.1 (2010-03-24), for more details, please check the man pages: Changes in dpkg.deb ─────────────────── * dpkg: Support for Breaks field (there's still lots of packages unneedingly using Conflicts fields which could be using Breaks instead, making upgrades less painful for the resolvers). Several fixes for proper handling of the Replaces field. Recognize Tag field (used by debtags, although the bulk of tags currently come from the archive overrides). New option: --clear-selections. Remove obsolete options: --force-auto-select/--refuse-auto-select. Add support for /etc/dpkg/dpkg.d/ config fragment loading. Add support for invokation hooks (--pre-invoke and --post-invoke). Set the environment variable DPKG_HOOK_ACTION in the invoked hooks. Some apt hooks could get switched to dpkg hooks, if they need the guarantee of being run whenever dpkg is invoked, regardless of frontend usage. Backgrounding during conffile prompt is not explicitly supported anymore, thus environment variable DPKG_NO_TSTP not honoured. New environment variables set during conffile prompt shell spawning DPKG_SHELL_REASON, DPKG_CONFFILE_OLD, DPKG_CONFFILE_NEW. New environment variables set for maintainer scripts DPKG_RUNNING_VERSION, DPKG_MAINTSCRIPT_PACKAGE, DPKG_MAINTSCRIPT_ARCH. Add new --status-fd action when disappearing a package. Remove obsolete ‘hold’ and ‘hold-reinstreq’ internal error status flags, due to upgrades no current system should have those in their status file, programs parsing the status file [P] can stop recognizing those. [P] <http://lists.debian.org/debian-devel/2007/05/msg01070.html> * dpkg-deb: Add support for lzma and xz compressed data.tar member in deb archives. Accept ustar long file names inside tar files in deb archives. * dpkg-split: Accept slash-terminated ar member names in deb-split archives. * dpkg-query: New option: -c, --control-path (to be used by programs which must access the internal database package control files, instead of hard coding its paths, needed for multiarch among others, but please check the man page first for usage details). * dpkg-statoveride: Rewritten in C. * dpkg-divert: New option: --listpackage. * update-alternatives: Make more robust against bogus user input and bogus database states. New options: --get-selections and --set-selections. New option: --query. New option: --skip-auto. New option: --log. * start-stop-daemon: Fixes to the --exec option, it should be safe to use it now even on package upgrades when the executable gets replaced, etc. New option: --umask. New option: -P, --procsched (change the process schedule). New option: -I, --iosched (change the I/O schedule). Changes in dpkg-dev.deb ─────────────────────── * dpkg-source: Support multiple -T options. * dpkg-buildpackage: Rewritten in perl (from shell script). New option: --admindir. New default for -r option is fakeroot (no need to specify it anymore). New option: -j (parallel builds). New option: -T (call the rules file with a specified target). New option: --as-root (requires the -T target to be run with root privs). New option: -R (specify rules file). New options: --source-option and --changes-option (pass options to dpkg-source and dpkg-genchanges respectively). * dpkg-checkbuilddeps: New option: --admindir. New option: -d (to specify Build-Depends). New option: -c (to specify Build-Conflicts). * dpkg-architecture: Add support for architecture wildcards. New option: -e (architecture equality). New option: -i (architecture identity). Add support for DEB_{HOST,BUILD}_ARCH_{BITS,ENDIAN}. * dpkg-shlibdeps: Dependency fields contents reordering for each substvar substitution. New option: --admindir. * dpkg-gencontrol: Dependency fields contents duplication stripping and reduction. Support multiple -T options. * dpkg-parsechangelog: New options: --format, --since, --until, --from, --to, --count, --offset, --all. * dpkg-genchanges: Support multiple -T options. * dpkg-name: Rewritten in perl (from shell script). * dpkg-scansources & dpkg-scanpackages: The override-file argument in dpkg-scanpackages is now optional (no need to pass /dev/null any longer). Support for compressed override files. New option: -m (for multiple version) in dpkg-scanpackages. New option: -e, --extra-override (in both tools). New option: --medium in dpkg-scanpackages. Changes in dselect.deb ────────────────────── Add support for /etc/dpkg/dselect.d/ config fragment loading. New keybinding ('C') to restore all selections to what's currently installed. Merge back dpkg-ftp and dpkg-multicd into dselect. Regards, Guillem, on behalf of the dpkg team.
Attachment:
signature.asc
Description: Digital signature