Uwe Ohse's uschedule was last modified in 2004. Since then, various things have become widely available. I have updated it to work with some of them.
There is no need for uscheduleconf
at all.
We have per-user service management widely available nowadays.
The nosh package has an external configuration import subsystem that sets up an entire per-user service management subsystem, including service bundles to run the uscheduled
dæmon.
There is no need to hand-create system-wide services for this any more.
Because of this all of the security advice in the uschedule doco is moot. The per-user service managers do not run as the superuser in the first place, and there are no privileges to ensure being dropped. Moreover, users can set up their own uschedule services to run under per-user service management without needing any superuser assistance.
uscheduled
understands the LISTEN_FDS
protocol.
This protocol is to dæmons that listen for connections what UCSPI is to dæmons that take accepted connections.
The fifo-listen
tool in the nosh package, and systemd, can pass an open file descriptor to the trigger FIFO to a per-user service, using the LISTEN_FDS
protocol.
I have updated uscheduled
to understand the protocol, and not create the trigger FIFO itself if the protocol is employed.
The trigger FIFO is in $XDG_RUNTIME_DIR/uschedule/
.
The idea of a per-user runtime directory for transient things that do not exist when the system is down like control sockets, interlock files, and FIFOs came about in 2012.
The service bundles set up by the nosh package's external configuration import subsystem employ fifo-listen
to place the trigger FIFO in the per-user runtime directory.
The uschedule
and other tools that need to pull the trigger now know to go looking there.
The service definitions do not live in $HOME/.uschedule/
.
The nosh toolset's service manager and systemd both have conventional places for per-user service bundles/unit files.
We have a per-user configuration tree convention.
The XDG Base Directory Specification has been around since approximately 2014.
In line with it the nosh package's external configuration import subsystem places the job and command files for uschedule beneath $HOME/.config/uschedule
(with a symbolic link from the old location for compatibility).
The clang compiler exists. This was invented in 2005. I have augmented the build from source process to detect and to use the clang C compiler if it finds it present.
I have also added tooling to create APT binary packages for Debian, pkgng binary packages for FreeBSD/TrueOS, and old pkg binary packages for OpenBSD.
Download source archive:
Configure your machine to use the package repository, or …
Download FreeBSD/TrueOS pre-built binaries:
Download Debian pre-built binaries:
Download OpenBSD pre-built binaries:
You can obtain it in two ways.
It is available in source form. This is distributed as a slashpackage-style package. That's a whole subject in itself; and the things that you need to know here are:
To just build the package from source in place use Owe Ohse's existing slashpackage instructions.
To build the binary packages on FreeBSD, TrueOS, or OpenBSD run
package/bsd/prepare && bsd/rules clean build binary
On FreeBSD and TrueOS this requires pkg version 1.2 or later in order to avoid segmentation faults and other bugs. So ensure that pkg is up to that version in your ports tree.
To build the binary packages on Debian Linux run
package/debian/prepare && dpkg-buildpackage -b -uc
Pre-built binary packages are available, that install the toolset under /usr/local
.