File: systemd.postinst

package info (click to toggle)
systemd 215-17%2Bdeb8u7
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 52,180 kB
  • ctags: 31,037
  • sloc: ansic: 192,918; xml: 39,605; sh: 13,002; makefile: 4,701; perl: 1,461; python: 1,355
file content (170 lines) | stat: -rw-r--r-- 5,857 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#! /bin/sh

set -e

_systemctl() {
    if [ -d /run/systemd/system ]; then
        systemctl "$@"
    fi
}

_update_catalog() {
    journalctl --update-catalog || true
}

# Update Message Catalogs database and reload in response to dpkg triggers
if [ "$1" = "triggered" ]; then
    shift
    for trigger in "$@"; do
        case $trigger in
            /usr/lib/systemd/catalog)
                _update_catalog
                ;;
            /etc/init.d)
                _systemctl daemon-reload
                ;;
        esac
    done
    exit 0
fi

# Cleanup state files from the auto-enabler which we used in wheezy
if dpkg --compare-versions "$2" lt "204-1"; then
    rm -f /var/lib/systemd/enabled-units
    rm -f /var/lib/systemd/run-debian-enable-units
    rm -f /var/lib/systemd/*.symlinks
fi

# Do a one-time migration of the local time setting
if dpkg --compare-versions "$2" lt "33-1"; then
    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ "$UTC" = "no" ] && [ ! -e /etc/adjtime ]; then
        printf "0.0 0 0.0\n0\nLOCAL" > /etc/adjtime
    fi
fi

# Do a one-time migration of the TMPTIME setting
if dpkg --compare-versions "$2" lt "204-9"; then
    # Fix up potentially broken tmp.conf, see Debian#738862
    if [ -e /etc/tmpfiles.d/tmp.conf ]; then
        sed -i '/^# Clear \/var\/tmp/d' /etc/tmpfiles.d/tmp.conf
        sed -i 's,^\(d /var/tmp\),#\1,g' /etc/tmpfiles.d/tmp.conf
    fi

    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ ! -e /etc/tmpfiles.d/tmp.conf ]; then
        case "$TMPTIME" in
            -*|infinite|infinity)
                cat > /etc/tmpfiles.d/tmp.conf <<EOF
# Avoid clearing /tmp by shipping an empty /etc/tmpfiles.d/tmp.conf file
# which overrides /usr/lib/tmpfiles.d/tmp.conf.
# This file was automatically created because of local modifications in
# /etc/default/rcS where TMPTIME was set to infinite.
EOF
                ;;
        esac
    fi
fi

# Do a one-time migration of the RAMTMP setting
if dpkg --compare-versions "$2" lt "204-8"; then
    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ -f /etc/default/tmpfs ]; then
        . /etc/default/tmpfs
    fi
    if [ "$RAMTMP" = "yes" ]; then
        # systemctl enable will work even when systemd is not the active PID 1.
        systemctl enable tmp.mount || true
    fi
fi

if dpkg --compare-versions "$2" lt "40-1"; then
    # /lib/init/rw has been replaced by /run, so try to remove it on upgrades
    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=643699
    _systemctl stop lib-init-rw.automount lib-init-rw.mount || true
    if [ -d /lib/init/rw ]; then
        rmdir --ignore-fail-on-non-empty /lib/init/rw || true
    fi
fi

# Create /etc/machine-id
systemd-machine-id-setup

# Setup system users and groups
addgroup --system systemd-journal

adduser --quiet --system --group --no-create-home --home /run/systemd \
    --gecos "systemd Time Synchronization" systemd-timesync
adduser --quiet --system --group --no-create-home --home /run/systemd/netif \
    --gecos "systemd Network Management" systemd-network
adduser --quiet --system --group --no-create-home --home /run/systemd/resolve \
    --gecos "systemd Resolver" systemd-resolve
adduser --quiet --system --group --no-create-home --home /run/systemd \
    --gecos "systemd Bus Proxy" systemd-bus-proxy

# Initial update of the Message Catalogs database
_update_catalog

# Make systemd-detect-virt utility usable for non-root users
setcap cap_dac_override,cap_sys_ptrace=ep /usr/bin/systemd-detect-virt || true

# We don’t ship /var/log/journal currently, so only run the following fix for
# systems where the administrator has explicitly enabled persistent logging by
# creating /var/log/journal.
if [ -d /var/log/journal ]; then
    # Grant read access to /var/log/journal for members of the adm group
    # via a filesystem ACL. This makes them able to read the journal.
    # Failure is ignored since there might be file systems mounted without
    # ACL support.
    setfacl -R -nm g:adm:rx,d:g:adm:rx /var/log/journal || true
fi

if [ -n "$2" ]; then
    _systemctl daemon-reexec || true
    _systemctl try-restart systemd-logind.service || true
    _systemctl try-restart systemd-networkd.service || true
    _systemctl try-restart systemd-resolved.service || true
    _systemctl try-restart systemd-timesyncd.service || true
fi

# Enable getty and remote-fs.target by default on new installs, and on
# upgrades from old systemd versions (where the symlinks included as deb
# content, and will thus have been removed by dpkg during the upgrade).
if dpkg --compare-versions "$2" lt "214-1"; then
    systemctl enable getty@tty1.service || true
    systemctl enable remote-fs.target || true
fi

if dpkg --compare-versions "$2" lt "215-13"; then
    systemctl enable hwclock-save.service || true
fi

# Re-run systemctl enable for any service that was enabled when preinst was run.
if dpkg --compare-versions "$2" ge "204"; then
    while read UNIT ; do
        systemctl enable $UNIT || true
    done </run/systemd/was-enabled || true
fi

# The /dev/log socket and /dev/initctl FIFO have been moved to /run and
# replaced by symlinks. Create the symlinks manually on upgrades as well.
# (https://bugs.debian.org/761340). Note that this will break the current
# journal as we cannot restart it properly (https://bugs.debian.org/771122) so
# this is mostly an one-time upgrade path from wheezy.
if dpkg --compare-versions "$2" lt-nl "215-3"; then
    if [ -p /run/systemd/initctl/fifo ] && [ ! -L /dev/initctl ]; then
         ln -sf /run/systemd/initctl/fifo /dev/initctl
    fi
    if [ -S /run/systemd/journal/dev-log ] && [ ! -L /dev/log ]; then
         ln -sf /run/systemd/journal/dev-log /dev/log
    fi
    _systemctl try-restart systemd-journald.service || true
fi

#DEBHELPER#