Bug#795269: TMPTIME not honored anymore

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Bug#795269: TMPTIME not honored anymore

Joey Schulze
Package: systemd
Version: 215-17+deb8u1

/etc/default/rcS contains a line

# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
#TMPTIME=0
TMPTIME=10

This setting is completely ignored by systemd during system boot.

I would consider this a bug and breaks functionality during an upgrade.


Hint for the interested reader: Copy /usr/lib/tmpfiles.d/tmp.conf into
/etc/tmpfiles.d and modify it as you like.  This should override the
system file.

Regards

        Joey

--
A mathematician is a machine for converting coffee into theorems.   Paul Erdös

Reply | Threaded
Open this post in threaded view
|

Bug#795269: TMPTIME not honored anymore

Josh Triplett-9
On Wed, 12 Aug 2015 15:00:22 +0200 Joey Schulze <[hidden email]> wrote:

> Package: systemd
> Version: 215-17+deb8u1
>
> /etc/default/rcS contains a line
>
> # delete files in /tmp during boot older than x days.
> # '0' means always, -1 or 'infinite' disables the feature
> #TMPTIME=0
> TMPTIME=10
>
> This setting is completely ignored by systemd during system boot.
>
> I would consider this a bug and breaks functionality during an upgrade.

systemd's postinst does a one-time migration from TMPTIME in
/etc/default/rcS to /etc/tmpfiles.d/tmp.conf , if the former has tmp
wiping disabled.  That migration, however, doesn't handle the case of
TMPTIME set to a non-zero, non-infinite value.  It should be possible to
do so, by copying /usr/lib/tmpfiles.d/tmp.conf to
/etc/tmpfiles.d/tmp.conf by way of a sed that changes the '-' on the D
line to ${TMPTIME}d, assuming TMPTIME is numeric.  The following patch
to systemd.postinst *should* work (not tested).

--- /var/lib/dpkg/info/systemd.postinst 2015-08-01 05:20:45.000000000 -0700
+++ /tmp/systemd.postinst 2015-08-12 10:33:21.108381657 -0700
@@ -72,6 +72,15 @@
 # /etc/default/rcS where TMPTIME was set to infinite.
 EOF
                 ;;
+            0)
+                ;;
+            [0-9]*)
+                {
+                    echo "# Automatically generated to migrate TMPTIME=${TMPTIME} from /etc/default/rcS"
+                    echo
+                    sed -e "/^D /s/-\$/${TMPTIME%%[^0-9]*}d/" < /usr/lib/tmpfiles.d/tmp.conf
+                } > /etc/tmpfiles.d/tmp.conf
+                ;;
         esac
     fi
 fi

Reply | Threaded
Open this post in threaded view
|

Bug#795269: TMPTIME not honored anymore

Josh Triplett-9
Control: tags -1 + patch

On Wed, 12 Aug 2015 10:36:07 -0700 Josh Triplett <[hidden email]> wrote:

> On Wed, 12 Aug 2015 15:00:22 +0200 Joey Schulze <[hidden email]> wrote:
> > Package: systemd
> > Version: 215-17+deb8u1
> >
> > /etc/default/rcS contains a line
> >
> > # delete files in /tmp during boot older than x days.
> > # '0' means always, -1 or 'infinite' disables the feature
> > #TMPTIME=0
> > TMPTIME=10
> >
> > This setting is completely ignored by systemd during system boot.
> >
> > I would consider this a bug and breaks functionality during an upgrade.
>
> systemd's postinst does a one-time migration from TMPTIME in
> /etc/default/rcS to /etc/tmpfiles.d/tmp.conf , if the former has tmp
> wiping disabled.  That migration, however, doesn't handle the case of
> TMPTIME set to a non-zero, non-infinite value.  It should be possible to
> do so, by copying /usr/lib/tmpfiles.d/tmp.conf to
> /etc/tmpfiles.d/tmp.conf by way of a sed that changes the '-' on the D
> line to ${TMPTIME}d, assuming TMPTIME is numeric.  The following patch
> to systemd.postinst *should* work (not tested).
>
> --- /var/lib/dpkg/info/systemd.postinst 2015-08-01 05:20:45.000000000 -0700
> +++ /tmp/systemd.postinst 2015-08-12 10:33:21.108381657 -0700
> @@ -72,6 +72,15 @@
>  # /etc/default/rcS where TMPTIME was set to infinite.
>  EOF
>                  ;;
> +            0)
> +                ;;
> +            [0-9]*)
> +                {
> +                    echo "# Automatically generated to migrate TMPTIME=${TMPTIME} from /etc/default/rcS"
> +                    echo
> +                    sed -e "/^D /s/-\$/${TMPTIME%%[^0-9]*}d/" < /usr/lib/tmpfiles.d/tmp.conf
> +                } > /etc/tmpfiles.d/tmp.conf
> +                ;;
>          esac
>      fi
>  fi

A correction to this patch: in addition to changing the '-' at the end
to a time period, this also needs to change the 'D' at the beginning to
'd'.  Otherwise, the directory will still get wiped at boot.  Corrected
patch:

--- /var/lib/dpkg/info/systemd.postinst 2015-08-01 05:20:45.000000000 -0700
+++ /tmp/systemd.postinst 2015-08-12 10:33:21.108381657 -0700
@@ -72,6 +72,15 @@
 # /etc/default/rcS where TMPTIME was set to infinite.
 EOF
                 ;;
+            0)
+                ;;
+            [0-9]*)
+                {
+                    echo "# Automatically generated to migrate TMPTIME=${TMPTIME} from /etc/default/rcS"
+                    echo
+                    sed -e "/^D /s/^D\(.*\)-\$/d\1${TMPTIME%%[^0-9]*}d/" < /usr/lib/tmpfiles.d/tmp.conf
+                } > /etc/tmpfiles.d/tmp.conf
+                ;;
         esac
     fi
 fi