Bug#872587: Document the Protected field

2024-03-27 Thread Martin-Éric Racine
ke 27. maalisk. 2024 klo 14.00 Andrey Rakhmatullin (w...@debian.org) kirjoitti:
>
> On Wed, Mar 27, 2024 at 01:29:50PM +0200, Martin-Éric Racine wrote:
> > > The documentation from deb-control(5) is:
> > >
> > > Protected: yes|no
> > > This field is usually only needed when the answer is yes.  It denotes
> > > a package that is required mostly for proper booting of the system or
> > > used for custom system-local meta-packages.  dpkg(1) or any other
> > > installation tool will not allow a Protected package to be removed (at
> > > least not without using one of the force options).
> > >
> > > It's probably also worth noting the parenthetical comment in the
> > > documentation of Essential:
> > >
> > > Essential: yes|no
> > > This field is usually only needed when the answer is yes.  It denotes
> > > a package that is required for the packaging system, for proper
> > > operation of the system in general or during boot (although the latter
> > > should be converted to Protected field instead).  dpkg(1) or any other
> > > installation tool will not allow an Essential package to be removed
> > > (at least not without using one of the force options).
> >
> > I'm still not sure that I inderstand the difference between those two.
> > They seem to accomplish the same thing. Did I miss something?
> Per my understanding which may be flawed:
>
> "Essential: yes" are always installed. Tools and dependencies assume they
> are installed.  Bootstrapping tools install them implicitly. Package
> management tools refuse to remove them.
>
> "Protected: yes" are nothing like that. Package management tools refuse to
> remove them and that's all.

Thanks. This sounds much clearer already. In that case, the above
deb-control(5) needs a much better phrasing. Something like:

Protected: yes|no
This field prevents a package from getting auto-removed by dpkg
without using one of the force options. It is intended for custom
local packages not meant for upload to the Debian repository.

Essential: yes|no
This field prevents a package from getting auto-removed by dpkg
without using one of the force options. It also makes debootstrap and
other similar tools force-install them. Maintainers must request
approval from the debian-devel mailing list before uploading any
package with the Essential field set to the Debian repository. See
Essential packages (Section 3.8) in the Debian Policy Manual for
details.

Martin-Éric



Bug#872587: Document the Protected field

2024-03-27 Thread Martin-Éric Racine
On Mon, 11 Sep 2023 21:27:09 -0700 Russ Allbery  wrote:
> Control: retitle -1 Document the Protected field
>
> Adam Borowski  writes:
> > On Fri, Aug 18, 2017 at 02:28:22PM -0700, Sean Whitton wrote:
>
> >> Do you have any idea how long we can expect to wait until dpkg supports
> >> the field?  I would suggest that we wait until dpkg has defined
> >> behaviour for the field, as it will make documenting it much easier.
> >> It will also allow us to be more confident that there is no serious
> >> disagreement about the purpose of the field.
>
> > Right, let's have dpkg maintainers tell us what they think.
>
> >> I couldn't find a bug against dpkg, but if there is one, it should
> >> probably be set to block this bug.
>
> > 872587 < 872589, I filed the Policy one first.  Block added.
>
> Per the resolution of #872589, this was implemented as the Protected field
> instead.  Retitling the bug accordingly.
>
> The documentation from deb-control(5) is:
>
> Protected: yes|no
> This field is usually only needed when the answer is yes.  It denotes
> a package that is required mostly for proper booting of the system or
> used for custom system-local meta-packages.  dpkg(1) or any other
> installation tool will not allow a Protected package to be removed (at
> least not without using one of the force options).
>
> It's probably also worth noting the parenthetical comment in the
> documentation of Essential:
>
> Essential: yes|no
> This field is usually only needed when the answer is yes.  It denotes
> a package that is required for the packaging system, for proper
> operation of the system in general or during boot (although the latter
> should be converted to Protected field instead).  dpkg(1) or any other
> installation tool will not allow an Essential package to be removed
> (at least not without using one of the force options).

I'm still not sure that I inderstand the difference between those two.
They seem to accomplish the same thing. Did I miss something?

It should also be noted that, as of version 2.117.0, Lintian still
gives a warning whenever a binary target has the Protected field set.

Martin-Éric