preferred place for system-wide config files

Anonymous swell.k at
Tue May 18 23:18:19 UTC 2010

Doug Barton <dougb at> writes:

> On 5/18/2010 2:57 PM, Anonymous wrote:
>> Wesley Shields <wxs at> writes:
>>> On Tue, May 18, 2010 at 01:21:01PM -0700, Doug Barton wrote:
>>>> In the world where PREFIX and LOCALBASE are different, PREFIX cannot be
>>>> relied on to exist after the port is installed. Therefore regarding
>>>> configuration files that are not installed by the port the thing
>>>> installed (for example portmaster) should look for its configuration
>>>> files in LOCALBASE.
>>> Yes, I agree with this.
>> This is ambiguous. Why PREFIX persistence is relevant here when we're
>> talking about one port and not about collaboration of several ports?
> There are 2 possible circumstances. One is that PREFIX == LOCALBASE, the
> other is that they are not the same. In the case where they are the same
> (which is far and away the most common) then everything works.

They only matter when there are dependencies on other ports. LOCALBASE
can be ignored otherwise.

> In the case where they are different one cannot guarantee that the
> directory referred to by PREFIX will continue to exist after the port is
> installed.

You didn't answer how can we guarantee port being installed but PREFIX
can't. PREFIX is inherent to port's intallation. It's where things
install. If it doesn't exist then the thing that uses config file is
some other (installed) port.

> In the case where they are different PREFIX by its very
> nature is ephemeral, and LOCALBASE, again, by definition, is "the local
> system."

And what is this "local system"? It may disappear along with PREFIX if
there are no ports installed. Just because some random config file
resides there doesn't make it LOCALBASE.

> One could potentially imagine a scenario where installing a
> port temporarily into a custom PREFIX is desirable, but the user would
> still want to get settings and configuration from "the system," which is
> defined to be LOCALBASE.

In case there is only one port registered PREFIX would be the only
populated place. LOCALBASE would point to some non-existent path or
empty directory (e.g. /usr/local). But PREFIX/etc would at least exist
according to MTREE_FILE.

> One could also imagine a system on which there is a LOCALBASE and lots
> of little PREFIXes, each of which is designed to be an autonomous
> semi-system of its own. In that case you would want a tool (like
> portmaster) to look for its configuration files in PREFIX. However, this
> last example is what we refer to as "an extreme corner case," which is
> to say it is not something for which we ought to optimize, and is
> potentially not even something for which we would want to make provisions.

So, what do you lose by using PREFIX? It's not optimization if it
doesn't have side effects.

> Fortunately, portmaster (which is what you initially inquired about in
> your PR) already has a facility for dealing with this, the
> ~/.portmasterrc file. You can of course also maintain your desired
> change to portmaster's behavior as a local patch.

It's same as LOCALBASE/etc. You can have only one copy of config file
under $HOME for one user.

> Either way, the answer to your question, "What SHOULD portmaster be
> doing?" is "Exactly what it is already doing." I'm sorry if you don't
> like the answer, but continuing to discuss it is not going to change it.

This doesn't concern only portmaster. As I've mentioned previously
xorg-server, subversion and git don't install any config file (not even
in share/examples) but still look for it inside PREFIX not LOCALBASE.
In other words almost any GNU_CONFIGURE port that doesn't install config
files. I've yet to see someone modify SYSCONFDIR for such ports.

> hope this helps,
> Doug

More information about the freebsd-ports mailing list