[alsa-devel] alsa-lib: add-on configs directory changed to /etc/alsa/conf.d

Takashi Iwai tiwai at suse.de
Mon Apr 16 20:08:33 CEST 2018


On Mon, 16 Apr 2018 15:01:33 +0200,
Jaroslav Kysela wrote:
> 
> Dne 10.4.2018 v 09:16 Takashi Iwai napsal(a):
> > On Wed, 04 Apr 2018 10:12:50 +0200,
> > Jaroslav Kysela wrote:
> >>
> >> Hi,
> >>
> >>    I pushed two commits to the alsa-lib package which changes the
> >> default location for the add-on config files to /etc/alsa/conf.d from
> >> /usr/share/alsa/alsa.conf.d . The reason is to follow the scheme like in
> >> other packages. Also, the users might want to change or disable contents
> >> in those 'default' files.
> >>
> >>    Example paths from other packages:
> >>
> >> # find /etc -type d -name conf.d
> >> /etc/fonts/conf.d
> >> /etc/NetworkManager/conf.d
> >> /etc/libblockdev/conf.d
> >> /etc/sssd/conf.d
> >> /etc/httpd/conf.d
> > 
> > How about evaluating both paths, with preference of /etc over
> > /usr/share?  The change to allow only /etc would break the existing
> > alsa-plugins packaging, for example, which still may put the config to
> > /usr/share/alsa/conf.d.
> >
> > In general, /usr/share is the place for global setups while /etc for
> > local machines.  So it's more natural to put the package default setup
> > to /usr/share while allowing overriding it via /etc.  You can imagine
> > /usr/share is shared via NFS.  If anything different is necessary, you
> > put it in /etc.
> 
> >From the packager perspective, it makes more sense to have only
> /etc/alsa/conf.d in the global alsa.conf and make symlinks to /usr/share
> like fontconfig does (/etc/fonts/conf.d). The users will modify only
> /etc contents as they should for the non-standard configurations. This
> variant also looks to me more straight for users. Opinions?

Well, I'm not sure.  First of all, is this kind of config style
(symlinking from /usr/share to /etc) generic?  I don't know of
anything else than fontconfig.

And, the case of fontconfig looks is somehow hackish: it prepares the
available configs in /usr/share/fontconfig/conf.avail/*, and
symlinking to a differently named directory, /etc/fonts/conf.d/*.

I think other cases are classified to a few different types:

- systemd-style:
  there are two directories, /usr/share/foo/xxx.d/ and
  /etc/foo/xxx.d/.  Read from both directories, but /etc is
  preferred.  i.e. if a same file name is present in both /etc and
  /usr/share, the former is taken and the latter is ignored.

- both /usr/share and /etc directories are evaluated, often in the
  order of /etc preference, but no conflict check like systemd.

- only either /etc or /usr/share


Basically fontconfig belongs to the last type but with some symlink
hacks.  Honestly speaking, I never understand why they took such an
approach...

Actually, I'm not objecting to addition of /etc.  But, as already
mentioned, a slight concern is the case where another package
(e.g. alsa-plugins-xyz) adds /usr/share/alsa/conf.d/*.conf.
With the current proposal, we'll silently break.  And the situation
won't change if we follow the fontconfig pattern.


thanks,

Takashi


More information about the Alsa-devel mailing list