UTRANS(1)

NAME

utrans - convert systemd units to generic unix equivalents

SYNOPSIS
utrans [-b [=]<BACKEND>[,<BACKEND>]] [-f <TYPE>] [-h] [-v] <UNIT> <OUTPUT_DIR>

OPTIONS

The following commandline options are supported:-

-b <BACKEND>
    load the specified backend(s). Can be a comma separated list. See BACKENDS below for further details.

-f <TYPE>
    force; valid types are:

    overwrite: allow overwriting existing output files

-h  open manpage

-v  show version

DESCRIPTION

utrans translates systemd services, sockets and timers to corresponding generic UNIX configuration and scripting as used in alternative settings that exclude systemd. <UNIT> is the pathname for the unit file to translate.

•   Service units are converted to openrc-run(8) service scripts.

•   Socket units are converted either to an xinetd(8) configuration or an openrc-run(8) script using socket-activate(1), depending on the requirements of the socket.

•   Timer units are converted to a crontab(5) fragment mapping systemd.time(7) events to a cron(8)-compatible expressions.

USAGE

utrans accepts two arguments: the systemd.unit(5) file (<UNIT>) and the output directory (<OUTPUT_DIR>). The systemd.unit(5) file which can be one of systemd.service(5), systemd.socket(5) or systemd.timer(5).

The script will create files in the following output subdirectories of <OUTPUT_DIR> depending on the unit type:
Unit | Output
Service | An openrc-run(8) script is created in init.d and a complementary file is created in conf.d if needed, for sourcing additional additional environment variables.
Socket | Depending upon the socket's configuration, an xinetd(8) configuration fragment is created in xinetd.d, or an openrc-run(8) script is created in init.d to start the service with socket-activate(1), .
Timer | A separate crontab(5) fragment is created into cron.d for each timer unit.

When the unit translation requires other units, then these are searched in the paths defined in the environment variable $SYSTEMD_UNIT_PATH, or in /usr/lib/system/system:/lib/systemd/system by default.

BACKENDS

Backends are used for producing different output for different settings. utrans finds and sources backend script fragments from the $UTRANS_DATA_DIR/backends directory or from /usr/share/utrans/backends by default.

If the backend is prefixed with =, the default backends are not loaded.

The following backends are available:
Backend | Unit | Notes
openrc | Service | Loaded by default
xinetd | Socket | Loaded by default
cron | Timer | Loaded by default
inetd | Socket | Only supports ListenStream and ListenDatagram using update-inetd(8)
lsb | Service | Alpha quality support for scripts with LSB-style insserv(8) headers

Contributions of other backends are welcome: see backends/README for further details.

LIMITATIONS

The following are known cases of poor or variant functionality:

•   Some special Executable Prefixes are ignored after warning.

•   Unescaping specifiers doesn't distinguish context: if you require a filesystem path, start the instance with '-'.

Patches are welcome at https://git.devuan.org/LeePen/unit-translator!

SEE ALSO

utrans-rc(1), openrc(8), socket-activate(1)

COPYRIGHT

BSD-2-Clause License https://opensource.org/licenses/BSD-2-Clause

Copyright (c) 2020, K Gopal Krishna.

Copyright (c) 2023-2024, Mark Hindley

AUTHORS

K Gopal Krishna <mail@kayg.org> under the guidance of Benda Xu <heroxbd@gentoo.org>, Adam Borowski <kilobyte@angband.pl> and Mo Zhou <lumin@debian.org>.

This project was a part of Google Summer of Code, 2020.

Mark Hindley <mark@hindley.org.uk>