Bug#812215: consider spliting systemd-tmpfiles into separate package

Josh Triplett josh at joshtriplett.org
Mon Feb 1 15:45:02 GMT 2016


On Mon, Feb 01, 2016 at 07:41:59AM -0800, Josh Triplett wrote:
> On Mon, Feb 01, 2016 at 04:24:21PM +0100, Ondřej Surý wrote:
> > Hi Michael,
> > 
> > I never bothered to implement more than 'd', but I am happy to
> > contribute my sysvrc shell snippet I use as replacement for systems
> > without systemd-tmpfiles installed. 
> > 
> > ```
> > do_tmpfiles() {
> >     local type path mode user group age argument
> >     if [ -r "$1" ]; then
> >         if [ -x /bin/systemd-tmpfiles ]; then
> >             /bin/systemd-tmpfiles --create "$1"
> >         else
> >             while read type path mode user group age argument; do
> >                 case "$type" in
> >                     d)
> >                         mkdir -p "$path";
> > 			chmod "$mode" "$path";
> >                         chown "$user:$group" "$path";
> >                         ;;
> >                     \#*)
> >                         ;;
> >                     *)
> >                         log_warning_msg "tmpfile.d type '$type' is not
> >                         supported yet"
> >                         ;;
> >                 esac
> >             done < "$1"
> > 	fi
> >     else
> >         log_warning_msg "tmpfiles.d file '$1' doesn't exist or is not
> >         readable"
> >     fi
> > }
> > ```
> > 
> > It should be fairly easy to implement the most common stuff used in
> > Debian.
> 
> Implementing the various operation letters makes up half the problem.
> The other half involves handling the various tmpfiles.d directories and
> the precedence between them.  That includes the usual "override files
> with the same filename" mechanism, but also:
> 
> > All configuration files are sorted by their filename in lexicographic
> > order, regardless of which of the directories they reside in. If
> > multiple files specify the same path, the entry in the file with the
> > lexicographically earliest name will be applied. All other conflicting
> > entries will be logged as errors. When two lines are prefix and suffix
> > of each other, then the prefix is always processed first, the suffix
> > later. Lines that take globs are applied after those accepting no
> > globs. If multiple operations shall be applied on the same file, (such
> > as ACL, xattr, file attribute adjustments), these are always done in
> > the same fixed order. Otherwise, the files/directories are processed
> > in the order they are listed.
> 
> That logic seems relatively straightforward (though fiddly) to implement
> in a language with associative arrays, such as bash or Python, but not
> in a language without them, such as POSIX sh.

Also, "Fields may be enclosed within quotes and contain C-style
escapes.".  And fields can contain a few substitution fields.  See "man
tmpfiles.d".




More information about the Pkg-systemd-maintainers mailing list