[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#574729: apt: essential is not a priority. apt-get should not install essential packages by default



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/.

Attachment: pgpC5sbiu4g1Y.pgp
Description: PGP signature


Reply to: