mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
unit: drop the Names= option
Names= is a source of errors, simply because alias names specified like this only become relevant after a unit has been loaded but cannot be used to load a unit. Let's get rid of the confusion and drop this field. To establish alias names peope should use symlinks, which have the the benefit of being useful as key to load a unit, even though they are not taken into account if unit names are listed but they haven't been explicitly referenced before.
This commit is contained in:
parent
a3a3e5b6ae
commit
8ff290af3b
2
TODO
2
TODO
@ -399,5 +399,3 @@ Regularly:
|
||||
Scheduled for removal (or fixing):
|
||||
|
||||
* xxxOverridable dependencies
|
||||
|
||||
* Names= unit option
|
||||
|
@ -869,35 +869,6 @@
|
||||
symlinks.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>Names=</varname></term>
|
||||
|
||||
<listitem><para>Additional names for
|
||||
this unit. The names listed here must
|
||||
have the same suffix (i.e. type) as
|
||||
the unit file name. This option may be
|
||||
specified more than once, in which
|
||||
case all listed names are used. Note
|
||||
that this option is different from the
|
||||
<varname>Alias=</varname> option from
|
||||
the [Install] section mentioned
|
||||
below. See below for details. Note
|
||||
that in almost all cases this option
|
||||
is not what you want. A symlink alias
|
||||
in the file system is generally
|
||||
preferable since it can be used as
|
||||
lookup key. If a unit with a symlinked
|
||||
alias name is not loaded and needs to
|
||||
be it is easily found via the
|
||||
symlink. However, if a unit with an
|
||||
alias name configured with this
|
||||
setting is not loaded it will not be
|
||||
discovered. This settings' only use is
|
||||
in conjunction with service
|
||||
instances.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>SourcePath=</varname></term>
|
||||
<listitem><para>A path to a
|
||||
@ -936,30 +907,7 @@
|
||||
time,
|
||||
<command>systemctl enable</command>
|
||||
will create symlinks from these names
|
||||
to the unit file name. Note that this
|
||||
is different from the
|
||||
<varname>Names=</varname> option from
|
||||
the [Unit] section mentioned above:
|
||||
The names from
|
||||
<varname>Names=</varname> apply
|
||||
unconditionally if the unit is
|
||||
loaded. The names from
|
||||
<varname>Alias=</varname> apply only
|
||||
if the unit has actually been
|
||||
installed with the
|
||||
<command>systemctl enable</command>
|
||||
command. Also, if systemd searches for a
|
||||
unit, it will discover symlinked alias
|
||||
names as configured with
|
||||
<varname>Alias=</varname>, but not
|
||||
names configured with
|
||||
<varname>Names=</varname> only. It is
|
||||
a common pattern to list a name in
|
||||
both options. In this case, a unit
|
||||
will be active under all names if
|
||||
installed, but also if not installed
|
||||
but requested explicitly under its
|
||||
main name.</para></listitem>
|
||||
to the unit file name.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
@ -90,7 +90,6 @@ $1.UtmpIdentifier, config_parse_unit_string_printf, 0,
|
||||
$1.ControlGroupModify, config_parse_bool, 0, offsetof($1, exec_context.control_group_modify)
|
||||
$1.ControlGroupPersistent, config_parse_tristate, 0, offsetof($1, exec_context.control_group_persistent)'
|
||||
)m4_dnl
|
||||
Unit.Names, config_parse_unit_names, 0, 0
|
||||
Unit.Description, config_parse_unit_string_printf, 0, offsetof(Unit, description)
|
||||
Unit.Documentation, config_parse_documentation, 0, offsetof(Unit, documentation)
|
||||
Unit.SourcePath, config_parse_path, 0, offsetof(Unit, source_path)
|
||||
|
@ -105,49 +105,6 @@ int config_parse_unit_deps(
|
||||
return 0;
|
||||
}
|
||||
|
||||
int config_parse_unit_names(
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
const char *lvalue,
|
||||
int ltype,
|
||||
const char *rvalue,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
Unit *u = userdata;
|
||||
char *w;
|
||||
size_t l;
|
||||
char *state;
|
||||
|
||||
assert(filename);
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
|
||||
char *t, *k;
|
||||
int r;
|
||||
|
||||
t = strndup(w, l);
|
||||
if (!t)
|
||||
return -ENOMEM;
|
||||
|
||||
k = unit_name_printf(u, t);
|
||||
free(t);
|
||||
if (!k)
|
||||
return -ENOMEM;
|
||||
|
||||
r = unit_merge_by_name(u, k);
|
||||
if (r < 0)
|
||||
log_error("Failed to add name %s, ignoring: %s", k, strerror(-r));
|
||||
|
||||
free(k);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int config_parse_unit_string_printf(
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
@ -2395,7 +2352,6 @@ void unit_dump_config_items(FILE *f) {
|
||||
{ config_parse_limit, "LIMIT" },
|
||||
{ config_parse_unit_cgroup, "CGROUP [...]" },
|
||||
{ config_parse_unit_deps, "UNIT [...]" },
|
||||
{ config_parse_unit_names, "UNIT [...]" },
|
||||
{ config_parse_exec, "PATH [ARGUMENT [...]]" },
|
||||
{ config_parse_service_type, "SERVICETYPE" },
|
||||
{ config_parse_service_restart, "SERVICERESTART" },
|
||||
|
@ -32,7 +32,6 @@ void unit_dump_config_items(FILE *f);
|
||||
|
||||
int config_parse_warn_compat(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_unit_deps(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_unit_names(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_unit_string_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_unit_strv_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
int config_parse_unit_path_printf(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||
|
Loading…
Reference in New Issue
Block a user