[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Add vendor configuration directory installation
From: |
Bruno Haible |
Subject: |
Re: Add vendor configuration directory installation |
Date: |
Fri, 10 Feb 2023 13:00:54 +0100 |
Jason Sikes wrote:
> You are correct that the
> configuration files should only go in one directory when done on behalf
> of a distribution.
OK, this removes my biggest worry.
> > * worse, invites packages to (perhaps inadvertently) restrict user
> > freedom.
>
> Restricting user freedom is certainly not the intent of this proposal.
> As a hacker and programmer, this is not something I am interested in for
> my own personal use. If I was an admin of a system where security is
> important, then, yes, I would be considering this.
Sorry for the misunderstanding: I meant that the distro would take away
freedom from the admin user (by making /usr read-only). The admin user
can control the non-privileged user anyway; there's no change in that area.
Anyway, you've blown away this worry.
> > - Distributors use --prefix=/usr and don't specify --sysconfdir, because
> > its default value $(prefix)/etc is already appropriate.
>
> My understanding of the "prefix" option is that it for building
> something that installs in the case that system rules prohibit
> installing in root.
The --prefix option is also meant for use by root. --prefix=/usr makes
sense when the /usr partition is writable. --prefix=/usr in combination
with "make install DESTDIR=/tmp/staging" also makes sense when the /usr
partition is read-only and there are some other means for transferring
the contents of /tmp/staging/usr to /usr. (Whether this can trigger
warnings by future invocations of the package manager apt / rpm / dnf / ...
is an independent consideration.)
> Another big reason we don't use "prefix" is that we (packagers) already
> have macros that determine where various files should go
Sure, if a packager has other means to collect the artifacts, a
"make install" step that depends on a --prefix option is not needed.
> > - Packages define a configure option for the /etc directory, e.g.
> > --enable-etcdir=/etc
> > through Autoconf [3].
> Yes, and what we are proposing is that this option (by a different name)
> will be included in Autoconf so that developers don't have to add it
> manually.
The proposed patch [1] does more than that. Especially the documentation
change suggests that it's OK for the "make install" step to install files
in both /usr/etc and /etc. As you clarified above, this is not what is
desired.
The configure --help output and/or the documentation should state that
- "make install" will install into SYSCONFDIR,
- but the package will read from ETCDIR and then from SYSCONFDIR.
> [4] "sysconfdir" and "distconfdir" are what we use in SUSE packaging to
> point to /etc and /usr/etc respectively. So I used them for this
> proposal. The problem is that their meanings are different, and their
> actual usage is swapped. So that was a terrible idea.
Yes, we can't change the meaning of "sysconfdir" (as a directory to
install into) or its name, so many years after it was introduced.
> Might I suggest:
>
> * RWCONFDIR,
>
> * ALTCONFDIR, or
>
> * ADMCONFDIR?
ADMINCONFDIR sounds good to me. I.e. the option's name would be
--adminconfdir.
ALTCONFDIR is too much from the perspective of the vendor. From the
perspective of the administrator, /etc is the primary and /usr/etc
is the alternate configuration directory.
RWCONFDIR can be misunderstood because
- on some systems, both /usr/etc and /etc will be writable by root,
- non-privileged users cannot write in either location.
The documentation then should make clear that
- the package is then supposed to make the value of the --adminconfdir
option available to the program by defining a C macro ADMINCONFDIR:
E.g. in packages that use Automake:
AM_CPPFLAGS += -DADMINCONFDIR=\"$(adminconfdir)\"
- the package's code is then supposed to read from that location,
- but the package should not install any files into $(adminconfdir).
How many packages will likely make use of this facility? Just systemd,
PAM, and D-BUS [1]? In my machine's /etc, I see roughly 200 configurations.
So, are we talking about a few packages or several hundreds?
Bruno
> > [0] https://0pointer.net/blog/projects/stateless.html
> > [1]
> > https://lists.gnu.org/archive/html/autoconf-patches/2023-02/msg00007.html
> > [2]
> > https://www.gnu.org/software/automake/manual/html_node/Hard_002dCoded-Install-Paths.html
> > [3]
> > https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Package-Options.html
- Re: Add vendor configuration directory installation, Paul Eggert, 2023/02/07
- Re: Add vendor configuration directory installation, Alfred M. Szmidt, 2023/02/10
- Re: Add vendor configuration directory installation, Jason Sikes, 2023/02/12
- Re: Add vendor configuration directory installation, Jason Sikes, 2023/02/16
- Re: Add vendor configuration directory installation, Jason Sikes, 2023/02/20
- Re: Add vendor configuration directory installation, Alfred M. Szmidt, 2023/02/20