| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- To: Debian developers list <debian-devel@pixar.com>
- Subject: Re: dpkg maintainer script calls and arguments
- In-Reply-To: <1506077@toto.iv>
- FCC: ~/mail/Outbound
- --text follows this line--
- In order to support easier upgrades where important packages get split
- into several pieces, I have implemented the following scheme, which I
- described on debian-private a while ago. It is enabled by the use of
- `--auto-deconfigure', or `-B', and the dselect method scripts in
- 0.93.76 have been changed to supply this option.
- ] I plan to make it possible to `deconfigure' packages at installation
- ] time, in order to keep dependency invariants satisfied. In a sane
- ] installation this will mean that everything will work right, even when
- ] (for example) an important package is split into two pieces or
- ] packages.
- ]
- ] Basically, suppose that package A is being split into A1 and A2, and B
- ] and C depend on A1 and A2 respectively. If you try to install A1 dpkg
- ] will consider removing A (because of the conflict between A and each
- ] of A1 and A2), but then C's dependency is not satisifed, and if you
- ] try to install A2 B's dependency wouldn't be satisfied.
- ]
- ] At the moment dpkg will simply refuse to do it. You have to say
- ] --force-depends, or remove either B or C.
- ]
- ] I'm going to arrange that dpkg will automatically deconfigure B or C,
- ] as appropriate, and try to reconfigure it later.
- ]
- ] So, if you do `dpkg -i A1.deb A2.deb' all will be well; if you do
- ] `dpkg -i A1.deb' you'll get A1 installed and configured correctly, but
- ] error messages about C being broken, and in order to fix C you'll have
- ] to install A2 as well, or return to A (dpkg will remove A1).
- ]
- ] All of this will appear very automatic to people who use dselect.
- ] People who do things manually will have a slightly more complicated
- ] task, as dpkg won't remove A (in the scenario above) unless it has
- ] been selected for deinstallation using dselect or dpkg --remove (which
- ] would fail because of the dependencies from B and C).
- This means that maintainer scripts can get called in two new ways:
- <prerm(C)> deconfigure in-favour <A1> <version> removing <A> <v.>
- <postinst(C)> abort-deconfigure in-favour <A1> <version> removing <A> <v.>
- using the example package names above.
- The first call happens before the prerm script of the package which is
- being removed (A) is called; the second happens if an error occurs and
- dpkg wants to back out of the installation.
- If the installation of both A1 and A2 is successful dpkg will then
- call both
- <postinst(B)> configure
- <postinst(C)> configure
- as usual.
- Some time ago I posted a message documenting all the maintainer script
- calls and their arguments. Below is a revised version of that
- message. I shall upload it as maintainer-script-args.txt, and it
- should go in project/standards. The top half of this message will go
- in auto-deconfiguration.txt.
- Ian.
|