On Sun, Mar 21, 2010 at 04:36:59AM +0100, Santiago Vila wrote: > Julian Andres Klode escribió: > >forcemerge 177952 574729 > >thanks > > > >On Sat, Mar 20, 2010 at 04:27:14PM +0100, Santiago Vila wrote: > >>Package: apt > >>Version: 0.7.25.3 > >> > >>It seems apt-get installs new essential packages by default. > >> > >>This *is* a bug. Please let me explain why: > >It is not, read Policy section 3.8: > > > > "Essential is defined as the minimal set of functionality that MUST > > be available and usable on the system at all times > > [...] > > Packages may assume that functionality provided by essential > > packages is always available without declaring explicit dependencies" > > > >If apt were not installing them, those packages would not be available > >on the system (1st part) and packages could not assume that they are > >available (2nd part). Thus, not installing all essential packages > >would violate the Policy and may result in a broken system. > > No, you are drawing conclusions that are not in policy. apt-get > would not violate policy, because policy does not say that apt-get > should try to "fix" the system. It only tries it in dist-upgrade or when installing new packages; and not on upgrade. And thus it's not fixing the system; but just ensuring that everything needed is there before doing distribution upgrades or new installations. Otherwise, changing the essential package set would be a much more difficult thing.
>
> Usually, essential and required packages are installed because
> debootstrap installs them in the very first system install, and also
> because it is difficult to remove them. So in practice it is not,
> and it has never been necessary for apt-get to install them.
>
> If the user does "dpkg --force-remove-essential", whatever breakage
> that may result is entirely under the responsability of the *user*,
> not the responsability of apt.
>
> Moreover, quoted section 3.8 is just a description of essential, not
> a description of how package managers should behave. For a
> description of what the package system should do, we might also read
> section 5.6.9:
>
> 5.6.9. `Essential'
> ------------------
>
> This is a boolean field which may occur only in the control file of a
> binary package or in a per-package fields paragraph of a main source
> control data file.
>
> If set to `yes' then the package management system will refuse to
> remove the package (upgrading and replacing it is still possible).
>
> Please note that it says "refuse to remove the package" (which in
> practice it translates into making particularly difficult to remove
> it), it does *not* say the package management system should
> *reinstall* it again at the smallest chance!
>
> If dpkg allows the user to remove an essential package (using an
> extra option), apt should not second-guess the will of the user, at
> least not automatically, and definitely not without asking first.
>
> Keeping the integrity of the system might be a desirable and nice
> thing in some cases, but it's not something that should be done
> *against* the will of the user!
You can prevent the installation of new essential packages by
pinning them to -1:
Package: test-essential
Pin: version 0.0-0
Pin-Priority: -1
Thus I'm also closing bug #177952; because it is possible
to "suppress installation of essential packages". Due to
Bug #216768 this may not always work in practice; but I
have not checked it further.
Anyway, this bug is done.
--
Julian Andres Klode - Debian Developer, Ubuntu Member
See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/.
pgp6pVkkvM5tL.pgp
Description: PGP signature

