[systemd-commits] 6 commits - Makefile.am man/kernel-install.xml man/os-release.xml man/systemd-nspawn.xml src/bootchart src/core src/hostname src/journal src/kernel-install src/nspawn src/shared src/sysusers tmpfiles.d/etc.conf units/systemd-sysusers.service.in

Lennart Poettering lennart at kemper.freedesktop.org
Fri Jun 13 11:12:13 PDT 2014


 Makefile.am                               |    2 -
 man/kernel-install.xml                    |   17 +++++++++----
 man/os-release.xml                        |   38 ++++++++++++++++++++++--------
 man/systemd-nspawn.xml                    |    5 ++-
 src/bootchart/bootchart.c                 |    8 +++---
 src/core/dbus-manager.c                   |    2 -
 src/core/macros.systemd.in                |   34 ++++++++++++++++++--------
 src/core/main.c                           |   32 +++++++++++++++++--------
 src/hostname/hostnamed.c                  |    7 +++++
 src/journal/journal-gatewayd.c            |    3 +-
 src/kernel-install/90-loaderentry.install |    2 +
 src/nspawn/nspawn.c                       |    2 -
 src/shared/path-util.c                    |   10 ++++++-
 src/sysusers/sysusers.c                   |   14 +++++------
 tmpfiles.d/etc.conf                       |    2 -
 units/systemd-sysusers.service.in         |    2 -
 16 files changed, 125 insertions(+), 55 deletions(-)

New commits:
commit 5b4c0131214cd99b7b4936b97c728ce0c5d9af32
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 20:04:31 2014 +0200

    core: don't complain at early boot if /etc/mtab is not the right symlink
    
    When we boot up with an empty /etc it's ok if the symlink doesn't exist.
    We will create it later with tmpfiles.

diff --git a/src/core/main.c b/src/core/main.c
index 29f2d5a..3aac5d1 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1151,19 +1151,25 @@ static int bump_rlimit_nofile(struct rlimit *saved_rlimit) {
 }
 
 static void test_mtab(void) {
-        char *p;
 
-        /* Check that /etc/mtab is a symlink */
+        static const char ok[] =
+                "/proc/self/mounts\0"
+                "/proc/mounts\0"
+                "../proc/self/mounts\0"
+                "../proc/mounts\0";
 
-        if (readlink_malloc("/etc/mtab", &p) >= 0) {
-                bool b;
+        _cleanup_free_ char *p = NULL;
+        int r;
 
-                b = streq(p, "/proc/self/mounts") || streq(p, "/proc/mounts");
-                free(p);
+        /* Check that /etc/mtab is a symlink to the right place or
+         * non-existing. But certainly not a file, or a symlink to
+         * some weird place... */
 
-                if (b)
-                        return;
-        }
+        r = readlink_malloc("/etc/mtab", &p);
+        if (r == -ENOENT)
+                return;
+        if (r >= 0 && nulstr_contains(ok, p))
+                return;
 
         log_warning("/etc/mtab is not a symlink or not pointing to /proc/self/mounts. "
                     "This is not supported anymore. "

commit 6d1d50f0811a8d80d010cce521570446245f47cc
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 19:56:12 2014 +0200

    tmpfiles: always use relative symlinks from tmpfiles snippets

diff --git a/tmpfiles.d/etc.conf b/tmpfiles.d/etc.conf
index e8368f5..37a2ef8 100644
--- a/tmpfiles.d/etc.conf
+++ b/tmpfiles.d/etc.conf
@@ -9,4 +9,4 @@
 
 L /etc/os-release - - - - ../usr/lib/os-release
 L /etc/localtime - - - - ../usr/share/zoneinfo/UTC
-L /etc/mtab - - - - /proc/self/mounts
+L /etc/mtab - - - - ../proc/self/mounts

commit 5ae4d543cb9b45ad6c6b82b78da1d6abc2291cdb
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 19:45:52 2014 +0200

    os-release: define /usr/lib/os-release as fallback for /etc/os-release
    
    The file should have been in /usr/lib/ in the first place, since it
    describes the OS container in /usr (and not the configuration in /etc),
    hence, let's support os-release files in /usr/lib as fallback if no
    version in /etc exists, following the usual override logic.
    
    A prior commit already enabled tmpfiles to create /etc/os-release as a
    symlink to /usr/lib/os-release should it be missing, thus providing nice
    compatibility with applications only checking in /etc.
    
    While it's probably a good idea if all apps check both locations via a
    fallback logic, it is only necessary in the early boot process, as long
    as the /etc/os-release symlink has not been restored, in case we boot
    with an empty /etc.

diff --git a/man/kernel-install.xml b/man/kernel-install.xml
index 3612b7d..178ad1d 100644
--- a/man/kernel-install.xml
+++ b/man/kernel-install.xml
@@ -95,14 +95,20 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
 
           <para>The kernel-install plugin <filename>50-depmod.install</filename> runs depmod for the <replaceable>KERNEL-VERSION</replaceable>.</para>
 
-          <para>The kernel-install plugin <filename>90-loaderentry.install</filename> copies
+          <para>The kernel-install plugin
+          <filename>90-loaderentry.install</filename> copies
           <replaceable>KERNEL-IMAGE</replaceable> to
           <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/linux</filename>.
-          It also creates a boot loader entry according to the boot loader specification in
+          It also creates a boot loader entry according to the boot
+          loader specification in
           <filename>/boot/loader/entries/<replaceable>MACHINE-ID</replaceable>-<replaceable>KERNEL-VERSION</replaceable>.conf</filename>.
-          The title of the entry is the <replaceable>PRETTY_NAME</replaceable> parameter specified in <filename>/etc/os-release</filename>,
-          or "Linux <replaceable>KERNEL-VERSION</replaceable>", if unset.
-          If the file <filename>initrd</filename> is found next to the
+          The title of the entry is the
+          <replaceable>PRETTY_NAME</replaceable> parameter specified
+          in <filename>/etc/os-release</filename> or
+          <filename>/usr/lib/os-release</filename> (if the former is
+          missing), or "Linux
+          <replaceable>KERNEL-VERSION</replaceable>", if unset.  If
+          the file <filename>initrd</filename> is found next to the
           <filename>linux</filename> file, the initrd will be added to
           the configuration.</para>
         </listitem>
@@ -165,6 +171,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
       <varlistentry>
         <term>
           <filename>/etc/os-release</filename>
+          <filename>/usr/lib/os-release</filename>
         </term>
           <listitem>
             <para>The content of the file specifies the operating system title <replaceable>PRETTY_NAME</replaceable>.</para>
diff --git a/man/os-release.xml b/man/os-release.xml
index c1dd62f..1144363 100644
--- a/man/os-release.xml
+++ b/man/os-release.xml
@@ -49,13 +49,15 @@
 
         <refsynopsisdiv>
                 <para><filename>/etc/os-release</filename></para>
+                <para><filename>/usr/lib/os-release</filename></para>
         </refsynopsisdiv>
 
         <refsect1>
                 <title>Description</title>
 
-                <para>The <filename>/etc/os-release</filename> file
-                contains operating system identification data.</para>
+                <para>The <filename>/etc/os-release</filename> and
+                <filename>/usr/lib/os-release</filename> files contain
+                operating system identification data.</para>
 
                 <para>The basic file format of
                 <filename>os-release</filename> is a newline-separated
@@ -78,20 +80,38 @@
                 strings. Lines beginning with "#" shall be ignored as
                 comments.</para>
 
-                <para><filename>/etc/os-release</filename> contains
-                data that is defined by the operating system vendor
-                and should not be changed by the administrator.</para>
+                <para>The file <filename>/etc/os-release</filename>
+                takes precedence over
+                <filename>/usr/lib/os-release</filename>. Applications
+                should check for the former, and exclusively use its
+                data if it exists, and only fall back to
+                <filename>/usr/lib/os-release</filename> if it is
+                missing. Applications should not read data from both
+                files at the same
+                time. <filename>/usr/lib/os-release</filename> is the
+                recommended place to store OS release information as
+                part of vendor trees. Frequently
+                <filename>/etc/os-release</filename> is simply a
+                symlink to <filename>/usr/lib/os-release</filename>,
+                to provide compatibility with applications only
+                looking at <filename>/etc</filename>.</para>
+
+                <para><filename>os-release</filename> contains data
+                that is defined by the operating system vendor and
+                should generally not be changed by the
+                administrator.</para>
 
                 <para>As this file only encodes names and identifiers
                 it should not be localized.</para>
 
-                <para>The file <filename>/etc/os-release</filename> might
-                be a symlink to another file, but it is important that
+                <para>The <filename>/etc/os-release</filename> and
+                <filename>/usr/lib/os-release</filename> files might
+                be symlinks to other files, but it is important that
                 the file is available from earliest boot on, and hence
                 must be located on the root file system.</para>
 
                 <para>For a longer rationale for
-                <filename>/etc/os-release</filename> please refer to
+                <filename>os-release</filename> please refer to
                 the <ulink
                 url="http://0pointer.de/blog/projects/os-release">Announcement of <filename>/etc/os-release</filename></ulink>.</para>
         </refsect1>
@@ -100,7 +120,7 @@
                 <title>Options</title>
 
                 <para>The following OS identifications parameters may be set using
-                <filename>/etc/os-release</filename>:</para>
+                <filename>os-release</filename>:</para>
 
                 <variablelist>
 
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index d668703..950558f 100644
--- a/man/systemd-nspawn.xml
+++ b/man/systemd-nspawn.xml
@@ -136,8 +136,9 @@
 
                 <para>As a safety check
                 <command>systemd-nspawn</command> will verify the
-                existence of <filename>/etc/os-release</filename> in
-                the container tree before starting the container (see
+                existence of <filename>/usr/lib/os-release</filename>
+                or <filename>/etc/os-release</filename> in the
+                container tree before starting the container (see
                 <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>). It
                 might be necessary to add this file to the container
                 tree manually if the OS of the container is too old to
diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
index 958a668..01a5bf1 100644
--- a/src/bootchart/bootchart.c
+++ b/src/bootchart/bootchart.c
@@ -386,10 +386,10 @@ int main(int argc, char *argv[]) {
                 if (sysfd < 0)
                         sysfd = open("/sys", O_RDONLY|O_CLOEXEC);
 
-                if (!build)
-                        parse_env_file("/etc/os-release", NEWLINE,
-                                       "PRETTY_NAME", &build,
-                                       NULL);
+                if (!build) {
+                        if (parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &build, NULL) == -ENOENT)
+                                parse_env_file("/usr/lib/os-release", NEWLINE, "PRETTY_NAME", &build, NULL);
+                }
 
                 /* wait for /proc to become available, discarding samples */
                 if (graph_start <= 0.0)
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 333c1d4..68a68a2 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -1191,7 +1191,7 @@ static int method_switch_root(sd_bus *bus, sd_bus_message *message, void *userda
         /* Safety check */
         if (isempty(init)) {
                 if (! path_is_os_tree(root))
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Specified switch root path %s does not seem to be an OS tree. /etc/os-release is missing.", root);
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Specified switch root path %s does not seem to be an OS tree. os-release file is missing.", root);
         } else {
                 _cleanup_free_ char *p = NULL;
 
diff --git a/src/core/main.c b/src/core/main.c
index d5d1ee2..29f2d5a 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1251,9 +1251,15 @@ static int status_welcome(void) {
                            "PRETTY_NAME", &pretty_name,
                            "ANSI_COLOR", &ansi_color,
                            NULL);
+        if (r == -ENOENT) {
+                r = parse_env_file("/usr/lib/os-release", NEWLINE,
+                                   "PRETTY_NAME", &pretty_name,
+                                   "ANSI_COLOR", &ansi_color,
+                                   NULL);
+        }
 
         if (r < 0 && r != -ENOENT)
-                log_warning("Failed to read /etc/os-release: %s", strerror(-r));
+                log_warning("Failed to read os-release file: %s", strerror(-r));
 
         return status_printf(NULL, false, false,
                              "\nWelcome to \x1B[%sm%s\x1B[0m!\n",
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
index a350490..241d296 100644
--- a/src/hostname/hostnamed.c
+++ b/src/hostname/hostnamed.c
@@ -108,6 +108,13 @@ static int context_read_data(Context *c) {
                            "PRETTY_NAME", &c->data[PROP_OS_PRETTY_NAME],
                            "CPE_NAME", &c->data[PROP_OS_CPE_NAME],
                            NULL);
+        if (r == -ENOENT) {
+                r = parse_env_file("/usr/lib/os-release", NEWLINE,
+                                   "PRETTY_NAME", &c->data[PROP_OS_PRETTY_NAME],
+                                   "CPE_NAME", &c->data[PROP_OS_CPE_NAME],
+                                   NULL);
+        }
+
         if (r < 0 && r != -ENOENT)
                 return r;
 
diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c
index 9a88676..c682666 100644
--- a/src/journal/journal-gatewayd.c
+++ b/src/journal/journal-gatewayd.c
@@ -767,7 +767,8 @@ static int request_handler_machine(
         if (r < 0)
                 return mhd_respondf(connection, MHD_HTTP_INTERNAL_SERVER_ERROR, "Failed to determine disk usage: %s\n", strerror(-r));
 
-        parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &os_name, NULL);
+        if (parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &os_name, NULL) == -ENOENT)
+                parse_env_file("/usr/lib/os-release", NEWLINE, "PRETTY_NAME", &os_name, NULL);
 
         get_virtualization(&v);
 
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
index a6a8abc..c17b8a9 100644
--- a/src/kernel-install/90-loaderentry.install
+++ b/src/kernel-install/90-loaderentry.install
@@ -32,6 +32,8 @@ fi
 
 if [[ -f /etc/os-release ]]; then
     . /etc/os-release
+elif [[ -f /usr/lib/os-release ]]; then
+    . /usr/lib/os-release
 fi
 
 if ! [[ $PRETTY_NAME ]]; then
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 29ddfbb..8270348 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -2799,7 +2799,7 @@ int main(int argc, char *argv[]) {
 
                 if (arg_boot) {
                         if (path_is_os_tree(arg_directory) <= 0) {
-                                log_error("Directory %s doesn't look like an OS root directory (/etc/os-release is missing). Refusing.", arg_directory);
+                                log_error("Directory %s doesn't look like an OS root directory (os-release file is missing). Refusing.", arg_directory);
                                 goto finish;
                         }
                 } else {
diff --git a/src/shared/path-util.c b/src/shared/path-util.c
index 5863429..efe464d 100644
--- a/src/shared/path-util.c
+++ b/src/shared/path-util.c
@@ -526,12 +526,18 @@ int path_is_os_tree(const char *path) {
         char *p;
         int r;
 
-        /* We use /etc/os-release as flag file if something is an OS */
+        /* We use /usr/lib/os-release as flag file if something is an OS */
+        p = strappenda(path, "/usr/lib/os-release");
+        r = access(p, F_OK);
+
+        if (r >= 0)
+                return 1;
 
+        /* Also check for the old location in /etc, just in case. */
         p = strappenda(path, "/etc/os-release");
         r = access(p, F_OK);
 
-        return r < 0 ? 0 : 1;
+        return r >= 0;
 }
 
 int find_binary(const char *name, char **filename) {

commit b0284aba93e8ccd415da5bbee86d84c12b1b9856
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 19:24:11 2014 +0200

    sysusers: always treat ENOENT as entry-not-found when doing NSS calls
    
    For most NSS calls it is documented that they return NULL + errno=0 when
    an entry is not found. However, in reality it appears to be common to
    return NULL + errno=ENOENT, instead. Handle that correctly, and don't
    consider ENOENT a systematic error.

diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 514e77e..d549969 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -481,7 +481,7 @@ static int uid_is_ok(uid_t uid, const char *name) {
                 p = getpwuid(uid);
                 if (p)
                         return 0;
-                if (errno != 0)
+                if (!IN_SET(errno, 0, ENOENT))
                         return -errno;
 
                 errno = 0;
@@ -489,7 +489,7 @@ static int uid_is_ok(uid_t uid, const char *name) {
                 if (g) {
                         if (!streq(g->gr_name, name))
                                 return 0;
-                } else if (errno != 0)
+                } else if (!IN_SET(errno, 0, ENOENT))
                         return -errno;
         }
 
@@ -595,7 +595,7 @@ static int add_user(Item *i) {
                         i->description = strdup(p->pw_gecos);
                         return 0;
                 }
-                if (errno != 0) {
+                if (!IN_SET(errno, 0, ENOENT)) {
                         log_error("Failed to check if user %s already exists: %m", i->name);
                         return -errno;
                 }
@@ -607,7 +607,7 @@ static int add_user(Item *i) {
                         log_error("User %s already exists in shadow database, but not in user database.", i->name);
                         return -EBADMSG;
                 }
-                if (errno != 0) {
+                if (!IN_SET(errno, 0, ENOENT)) {
                         log_error("Failed to check if user %s already exists in shadow database: %m", i->name);
                         return -errno;
                 }
@@ -720,14 +720,14 @@ static int gid_is_ok(gid_t gid) {
                 g = getgrgid(gid);
                 if (g)
                         return 0;
-                if (errno != 0)
+                if (!IN_SET(errno, 0, ENOENT))
                         return -errno;
 
                 errno = 0;
                 p = getpwuid((uid_t) gid);
                 if (p)
                         return 0;
-                if (errno != 0)
+                if (!IN_SET(errno, 0, ENOENT))
                         return -errno;
         }
 
@@ -761,7 +761,7 @@ static int add_group(Item *i) {
                         i->gid_set = true;
                         return 0;
                 }
-                if (errno != 0) {
+                if (!IN_SET(errno, 0, ENOENT)) {
                         log_error("Failed to check if group %s already exists: %m", i->name);
                         return -errno;
                 }

commit b532bdeae9b13fe93a54850f5e7f99c753bda6fa
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 19:18:55 2014 +0200

    rpm: add RPM macros to apply sysusers, sysctl, and binfmt drop-ins
    
    With this in place RPMs can make sure that whatever they drop in is
    immeidately applied, and not delayed until next reboot.
    
    This also moves systemd-sysusers back to /usr/bin, since hardcoding the
    path to /usr/lib in the macros would mean compatibility breaks in
    future, should we turn sysusers into a command that is actually OK for
    people to call directly. And given that that is quite likely to happen
    (since it is useful to prepare images with its --root= switch), let's
    just prepare for it.

diff --git a/Makefile.am b/Makefile.am
index 2ceee2a..8af619c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1782,7 +1782,7 @@ systemd_sysusers_LDADD = \
 	libsystemd-internal.la \
 	libsystemd-shared.la
 
-rootlibexec_PROGRAMS += \
+rootbin_PROGRAMS += \
 	systemd-sysusers
 
 nodist_systemunit_DATA += \
diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in
index 167016a..0d5f894 100644
--- a/src/core/macros.systemd.in
+++ b/src/core/macros.systemd.in
@@ -26,7 +26,9 @@
 %_udevrulesdir @udevrulesdir@
 %_journalcatalogdir @catalogdir@
 %_tmpfilesdir @tmpfilesdir@
+%_sysusersdir @sysusersdir@
 %_sysctldir @sysctldir@
+%_binfmtdir @binfmtdir@
 
 %systemd_requires \
 Requires(post): systemd \
@@ -76,3 +78,15 @@ journalctl --update-catalog >/dev/null 2>&1 || : \
 %tmpfiles_create() \
 systemd-tmpfiles --create %{?*} >/dev/null 2>&1 || : \
 %{nil}
+
+%sysusers_create() \
+systemd-sysusers %{?*} >/dev/null 2>&1 || : \
+%{nil}
+
+%sysctl_apply() \
+ at rootlibexecdir@/systemd-sysctl %{?*} >/dev/null 2>&1 || : \
+%{nil}
+
+%binfmt_apply() \
+ at rootlibexecdir@/systemd-binfmt %{?*} >/dev/null 2>&1 || : \
+%{nil}
diff --git a/units/systemd-sysusers.service.in b/units/systemd-sysusers.service.in
index e123f39..a4c7714 100644
--- a/units/systemd-sysusers.service.in
+++ b/units/systemd-sysusers.service.in
@@ -19,4 +19,4 @@ ConditionNeedsUpdate=/etc
 [Service]
 Type=oneshot
 RemainAfterExit=yes
-ExecStart=@rootlibexecdir@/systemd-sysusers
+ExecStart=@rootbindir@/systemd-sysusers

commit 8cf7c96517c3688d29b30651adcda9e71e7fcb07
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Jun 13 19:05:22 2014 +0200

    rpm: don't hardcode the binary paths in the macros, rely on $PATH
    
    this gives us a little bit more freedom to move things around later on,
    as we don't hardcode the systemd paths in old RPMs that shall work with
    new systemds.

diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in
index 89b4825..167016a 100644
--- a/src/core/macros.systemd.in
+++ b/src/core/macros.systemd.in
@@ -37,42 +37,42 @@ Requires(postun): systemd \
 %systemd_post() \
 if [ $1 -eq 1 ] ; then \
         # Initial installation \
-        @rootbindir@/systemctl preset %{?*} >/dev/null 2>&1 || : \
+        systemctl preset %{?*} >/dev/null 2>&1 || : \
 fi \
 %{nil}
 
 %systemd_preun() \
 if [ $1 -eq 0 ] ; then \
         # Package removal, not upgrade \
-        @rootbindir@/systemctl --no-reload disable %{?*} > /dev/null 2>&1 || : \
-        @rootbindir@/systemctl stop %{?*} > /dev/null 2>&1 || : \
+        systemctl --no-reload disable %{?*} > /dev/null 2>&1 || : \
+        systemctl stop %{?*} > /dev/null 2>&1 || : \
 fi \
 %{nil}
 
 %systemd_postun() \
- at rootbindir@/systemctl daemon-reload >/dev/null 2>&1 || : \
+systemctl daemon-reload >/dev/null 2>&1 || : \
 %{nil}
 
 %systemd_postun_with_restart() \
- at rootbindir@/systemctl daemon-reload >/dev/null 2>&1 || : \
+systemctl daemon-reload >/dev/null 2>&1 || : \
 if [ $1 -ge 1 ] ; then \
         # Package upgrade, not uninstall \
-        @rootbindir@/systemctl try-restart %{?*} >/dev/null 2>&1 || : \
+        systemctl try-restart %{?*} >/dev/null 2>&1 || : \
 fi \
 %{nil}
 
 %udev_hwdb_update() \
- at rootbindir@/udevadm hwdb --update >/dev/null 2>&1 || : \
+udevadm hwdb --update >/dev/null 2>&1 || : \
 %{nil}
 
 %udev_rules_update() \
- at rootbindir@/udevadm control --reload >/dev/null 2>&1 || : \
+udevadm control --reload >/dev/null 2>&1 || : \
 %{nil}
 
 %journal_catalog_update() \
- at rootbindir@/journalctl --update-catalog >/dev/null 2>&1 || : \
+journalctl --update-catalog >/dev/null 2>&1 || : \
 %{nil}
 
 %tmpfiles_create() \
- at rootbindir@/systemd-tmpfiles --create %{?*} >/dev/null 2>&1 || : \
+systemd-tmpfiles --create %{?*} >/dev/null 2>&1 || : \
 %{nil}



More information about the systemd-commits mailing list