mirror of
https://github.com/systemd/systemd.git
synced 2025-01-26 14:04:03 +03:00
systemctl: Don't skip SysV init.d scripts when enabling/disabling units
If there is both a SysV init.d script and a systemd unit for a given name, we want to do the same enable/disable operation for both, instead of just on the systemd unit. This keeps the enablement status in sync so that switching init systems behaves as expected.
This commit is contained in:
parent
0f0467e63b
commit
355ff44900
@ -5149,7 +5149,10 @@ static int enable_sysv_units(const char *verb, char **args) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (found_native)
|
||||
/* If we have both a native unit and a SysV script,
|
||||
* enable/disable them both (below); for is-enabled, prefer the
|
||||
* native unit */
|
||||
if (found_native && streq(verb, "is-enabled"))
|
||||
continue;
|
||||
|
||||
p = path_join(arg_root, SYSTEM_SYSVINIT_PATH, name);
|
||||
@ -5161,7 +5164,10 @@ static int enable_sysv_units(const char *verb, char **args) {
|
||||
if (!found_sysv)
|
||||
continue;
|
||||
|
||||
log_info("%s is not a native service, redirecting to systemd-sysv-install", name);
|
||||
if (found_native)
|
||||
log_info("Synchronizing state of %s with SysV init with %s...", name, argv[0]);
|
||||
else
|
||||
log_info("%s is not a native service, redirecting to systemd-sysv-install", name);
|
||||
|
||||
if (!isempty(arg_root))
|
||||
argv[c++] = q = strappend("--root=", arg_root);
|
||||
@ -5209,6 +5215,9 @@ static int enable_sysv_units(const char *verb, char **args) {
|
||||
} else
|
||||
return -EPROTO;
|
||||
|
||||
if (found_native)
|
||||
continue;
|
||||
|
||||
/* Remove this entry, so that we don't try enabling it as native unit */
|
||||
assert(f > 0);
|
||||
f--;
|
||||
|
Loading…
x
Reference in New Issue
Block a user